日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
構(gòu)建Canvas動畫框架靈與肉的結(jié)合

今天一直在弄css3的立體效果,發(fā)現(xiàn)如果結(jié)合canvas和css3的3d,可以做出很多不可思議的效果來,大家可以發(fā)揮想象力!

接著上節(jié)講canvas動畫框架:

1.通用類的提取:動畫對象與幀對象

2.靈與肉的結(jié)合:便于拆卸的運動方程

3.進度條的實現(xiàn):canvas的圖片預加載

4.demo測試:通過一個demo測試框架

這一節(jié)我們先來說說運動方程的疊加。

之前寫過的一個動畫框架,并沒有把運動獨立出來。這樣造成的后果就是,每個動畫對象沒有自己的運動個性!如果我們批量創(chuàng)建一百個動畫對象,并且想讓它們每一個都擁有自己的運動屬性,將非常麻煩。

所以,將運動與形式相分離,是***的解決方案。

上節(jié)構(gòu)建canvas動畫框架通用類的提取提到過,我們?yōu)锳niele動畫對象創(chuàng)建了它自己的運動方程庫motionFncs。那么怎么操作這個運動方程庫呢?

  
 
 
  1.   //添加運動方法  
  2.      addMotionFnc:function (name,fnc) {  
  3.         this.motionFncs[name]=fnc;  
  4.     },  
  5.     //刪除運動方法  
  6.     deleMotionFnc:function(name){  
  7.         this.motionFncs[name]=null;  
  8.     },  
  9.     //遍歷運動方法庫里的所有運動方法  
  10.     countMotionFncs:function () {  
  11.         for (var i=0; i
  12.             if(this.motionFncs[i]==null)  
  13.                 continue;  
  14.             this.motionFncs[i].call(this);  
  15.         }  
  16.     }

上節(jié)已經(jīng)介紹過,在Aniele動畫對象中,我們添加了以上運動方法。

其中countMotionFncs是非常重要的一個方法,通過它的核心語句:this.motionFncs[i].call(this),我們把運動方程的this指針更改為動畫對象,相當于把命令給了動畫對象,動畫對象就會乖乖地區(qū)執(zhí)行一遍,比如我們定義了一個運動方程pass

  
 
 
  1. function pass(){  
  2.     thisthis.loca.x-=this.speed.x;  

我們定義一個小人的動畫對象:

  
 
 
  1. man=new Aniele(); 

那么我可以用這個方法把運動方程添加到man的運動方法庫里面:

  
 
 
  1. man.addMotionFnc(0,run); 

這樣,這個小man就擁有了一個運動屬性,只要我們在每一幀都執(zhí)行一下這個運動方程,就可以實現(xiàn)man的運動了!

運動方程庫中我們可以添加多個運動方程,運動方程會疊加而不互相影響,方便我們寫出非常復雜的運動;并且在運動方程庫中,我們不僅可以制定運動對象坐標的改變規(guī)則(運動),還可以隨意改變運動對象的其他屬性,包括透明度,翻轉(zhuǎn),縮放等等。

原文鏈接:http://www.cnblogs.com/shawn-xie/archive/2012/07/11/2586728.html


網(wǎng)頁名稱:構(gòu)建Canvas動畫框架靈與肉的結(jié)合
標題來源:http://www.5511xx.com/article/ccegssj.html