中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > 用DHTML與XML制作Ajax幻燈片
ASP.NET高級教程—實(shí)戰(zhàn)篇 回到列表 寫出高質(zhì)量軟件的75條體會
 用DHTML與XML制作Ajax幻燈片

作者:Jack Herrington 時間: 2006-05-26 文檔類型:轉(zhuǎn)載 來自:IBM developerWorks

第 1 頁 用DHTML與XML制作Ajax幻燈片 [1]
第 2 頁 用DHTML與XML制作Ajax幻燈片 [2]
第 3 頁 用DHTML與XML制作Ajax幻燈片 [3]
第 4 頁 用DHTML與XML制作Ajax幻燈片 [4]
第 5 頁 用DHTML與XML制作Ajax幻燈片 [5]
第 6 頁 用DHTML與XML制作Ajax幻燈片 [6]
第 7 頁 用DHTML與XML制作Ajax幻燈片 [7]

創(chuàng)建幻燈片放映

現(xiàn)在已經(jīng)有了能夠確定幻燈片中圖像的 Web 服務(wù),還需要顯示這些幻燈片并執(zhí)行 Ken-Burns-Effect 動畫的客戶端代碼。為此必須將執(zhí)行三種基本功能的 JavaScript 對象結(jié)合起來:

1、封裝圖像
2、提供基本的動畫引擎
3、實(shí)現(xiàn)特效(比如移動、縮放和漸變) 

封裝圖像

首先從圖像容器開始,我創(chuàng)建一個類 ImageInfo,如 清單 4 所示。

清單 4. ImageInfo.js

function ImageInfo( src, width, height, htmlObj )
{
  this.src = src;
  this.width = width;
  this.height = height;
  this.current_width = width;
  this.current_height = height;

  this.htmlObj = htmlObj;
  this.htmlObj.src = this.src;
  this.htmlObj.width = this.current_width;
  this.htmlObj.height = this.current_height;
}

ImageInfo.prototype.set_opacity = function( opacity )
{
  this.htmlObj.style.MozOpacity = opacity / 100;
  var f = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+opacity+')';
  this.htmlObj.style.filter = f;
}

ImageInfo.prototype.set_position = function( x, y )
{
  this.htmlObj.style.left = x+'px';
  this.htmlObj.style.top = y+'px';
}

ImageInfo.prototype.set_size = function( w, h )
{
  this.current_width = w;
  this.current_height = h;

  this.htmlObj.width = this.current_width;
  this.htmlObj.height = this.current_height;
}

ImageInfo.prototype.get_image = function()
{
  return this.htmlObj;
}

ImageInfo.prototype.hide = function()
{
  this.htmlObj.style.visibility = 'hidden';
}

ImageInfo.prototype.show = function()
{
  this.htmlObj.style.visibility = 'visible';
}

幻燈片中每幅圖片都有一個對應(yīng)的 ImageInfo 對象。該對象封裝了圖像信息:src、width 和 height。該對象還包含對在文檔中顯示圖像的 HTML <img> 標(biāo)記的引用,以及移動圖像、設(shè)置透明度等的 helper 方法。注意,在 Firefox 和其他基于 Gecko® 的瀏覽器中,MozOpacity 樣式用于設(shè)置不透明性。Internet Explorer 中則使用過濾器效果。

創(chuàng)建簡單的動畫引擎

下面我們來編寫一個簡單的動畫引擎。Animation.js 文件中的代碼如 清單 5 所示。

清單 5. Animation.js

function Animation( am, img, seconds, effects )
{
  this.img = img;
  this.animationManager = am;
  this.seconds = seconds;
  this.effects = effects;
  this.startMS = 0;
}

Animation.prototype.start = function()
{
  this.animationManager.add( this );
  this.startMS = 0;

  this.img.hide();
  for( var e in this.effects )
  {
    this.effects[e].apply( 0 );
  }
  this.img.show();
}

Animation.prototype.animate = function()
{
  var d = new Date();
  if ( this.startMS == 0 )
    this.startMS = d.valueOf();

  var p = (((d.valueOf()-this.startMS)/1000)/this.seconds)*100;
  for( var e in this.effects )
    this.effects[e].apply( p );
}

Animation.prototype.done = function()
{
  var d = new Date();
  return ( ( d.valueOf() - this.startMS ) / 1000 ) > this.seconds;
}

function AnimationManager( speed )
{
   this.animations = [];
   var self = this;
   window.setInterval( function() { self.idle(); }, speed );
}

AnimationManager.prototype.add = function( anim )
{
  this.animations.push( anim );
}

AnimationManager.prototype.idle = function()
{
  if ( this.animations.length > 0 )
  {
    this.animations[0].animate();
    if ( this.animations[0].done() )
      this.animations.shift();
    if ( this.animations.length == 0 )
      this.on_finished();
  }
}

AnimationManager.prototype.on_finished = function()
{
}

清單 5 包含兩個類:Animation 和 AnimationManager。AnimationManager 類控制定時器并向其 Animation 對象列表中的第一項(xiàng)發(fā)送動畫消息。當(dāng) Animation 對象報告自己已經(jīng)完成的時候,該類就轉(zhuǎn)向下一項(xiàng),依此類推。

Animation 在一定的時間(按秒數(shù)指定)內(nèi)對特定圖片應(yīng)用一系列特效。Animation 對象需要計算完成度消息并將其發(fā)送給每種特效的 apply 方法。特效然后根據(jù)這個百分比計算應(yīng)該如何處理圖像。比如,移動特效知道起點(diǎn)和終點(diǎn),可以根據(jù)這個百分比計算應(yīng)該將圖像放到何處。如果是 50%,圖像應(yīng)該移到起點(diǎn)和終點(diǎn)之間。

作為我工作的一部分,同時也為了撰寫本文,我考察了大量的 JavaScript 動畫代碼。JavaScript 動畫經(jīng)常因?yàn)椴环(wěn)定而受到指責(zé),因?yàn)樗?JavaScript 動畫都使用 window.setInterval 方法來完成。這是一個定時器方法,同時指定了回調(diào)時間間隔和回調(diào)函數(shù)。Web 上的大部分代碼都要求每次調(diào)用該函數(shù)時動畫移動一步。但這并不能真正工作,因?yàn)楦嬖V瀏覽器的間隔僅僅是一個建議。如果規(guī)定 20 毫秒,但實(shí)際上可能第一次在 25 毫秒時調(diào)用,下一次卻要等到一秒鐘以后。瀏覽器是單線程的,因此不能依賴于定時器。

解決方案是使用 Date 對象的 valueOf 方法確定動畫開始了多長時間。這個時間差是用毫秒計的,用于確定當(dāng) setInterval 定時器離開時動畫應(yīng)該執(zhí)行百分之多少。該方法可以提供規(guī)定的任意長時間的平滑動畫。

出處:IBM developerWorks
責(zé)任編輯:moby

上一頁 用DHTML與XML制作Ajax幻燈片 [3] 下一頁 用DHTML與XML制作Ajax幻燈片 [5]

◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
理性思考Flash與Ajax相關(guān)問題
掌握 Ajax
[組件]AsPT1.0.0 圖片幻燈片
用FSO操作 xml
js版幻燈片效果
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計大賽開啟
國際體驗(yàn)設(shè)計大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:4/71個記錄/頁 轉(zhuǎn)到 頁 共7個記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2