久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

HTML5 Canvas動(dòng)畫設(shè)計(jì)解析

我們使用JavaScript操控canvas元素可以很容易做出可互動(dòng)的動(dòng)畫。但是當(dāng)初canvas元素并不是為此而設(shè)計(jì)的(與Flash不同),因此存在一些限制。其中最大的限制就是Canvas元素中的圖形一經(jīng)繪
       我們使用JavaScript操控canvas元素可以很容易做出可互動(dòng)的動(dòng)畫。但是當(dāng)初canvas元素并不是為此而設(shè)計(jì)的(與Flash不同),因此存在一些限制。

        其中最大的限制就是Canvas元素中的圖形一經(jīng)繪制就不會(huì)改變,除非你要人為改變它。如果我們需要改變Canvas元素中繪制的圖形,我們就必須先重繪相應(yīng)的圖形。重繪復(fù)雜的圖形會(huì)花費(fèi)掉很多的時(shí)間,因此動(dòng)畫效果也將受限于電腦的速度。

實(shí)現(xiàn)動(dòng)畫的原理

1、重繪canvas

除非你會(huì)畫一些能夠填滿整個(gè)canvas的圖形(例如背景圖),否則你有必要**先前繪制的所有圖形。而最簡(jiǎn)單的方法是使用clearRect方法。

2、保存canvas狀態(tài)

如果你更動(dòng)了任何一個(gè)會(huì)影響到canvas狀態(tài)的設(shè)定(樣式、變形等等),并且希望能夠確保每一次繪制畫格時(shí)都是原本的狀態(tài),你就需要保存canvas狀態(tài)。

3、繪制移動(dòng)中的圖形

在這一步驟里才真正畫出需要移動(dòng)的圖形。

4、讀取canvas狀態(tài)

如果你先前保存過Canvas的狀態(tài),就先在畫新的圖形之前讀取之前的狀態(tài)。

動(dòng)畫的操控


圖形是以直接使用canvas方法或調(diào)用自訂的函數(shù)所繪制的。在正常情況下,當(dāng)JavaScript執(zhí)行完成時(shí),我們就能看見呈現(xiàn)在canvas上的結(jié)果。

我們需要一個(gè)方法,能在一段時(shí)間內(nèi)循環(huán)執(zhí)行我們的繪圖函數(shù)。有兩個(gè)方法可操控這樣的動(dòng)畫。首先,這里有setInterval和setTimeout函數(shù),可用來在指定的時(shí)間內(nèi)調(diào)用特定的函數(shù)。

  1. setInterval(animateShape,500);
  2. setTimeout(animateShape,500);
復(fù)制代碼


如果你不需要和用戶互動(dòng),就最好使用setInterval函數(shù),他會(huì)重復(fù)執(zhí)行預(yù)先準(zhǔn)備好的代碼。在上面的例子里,animateShape函數(shù)是每500毫秒(一秒的一半)執(zhí)行一次。setTimeout函數(shù)只會(huì)在設(shè)定好的時(shí)間點(diǎn)上執(zhí)行一次。

第二個(gè)方法是我們可以利用用戶的輸入來操控。如果我們想要制作游戲,我們可以使用鍵盤或滑鼠的事件來操控動(dòng)畫。只需設(shè)定事件接收器(eventListener),我們就能捕捉任何的使用者動(dòng)作,并執(zhí)行我們的動(dòng)畫函數(shù)。

動(dòng)畫范例

在這個(gè)范例中,我們使用setInterval函數(shù)來操控動(dòng)畫,使小型的太陽系模擬系統(tǒng)動(dòng)起來。
  1. var sun = new Image();
  2. var moon = new Image();
  3. var earth = new Image();
  4. function init(){
  5.   sun.src = 'images/sun.png';
  6.   moon.src = 'images/moon.png';
  7.   earth.src = 'images/earth.png';
  8.   setInterval(draw,100);
  9. }

  10. function draw() {
  11.   var ctx = document.getElementById('canvas').getContext('2d');

  12.   ctx.globalCom**iteOperation = 'destination-over';
  13.   ctx.clearRect(0,0,300,300); // **canvas

  14.   ctx.fillStyle = 'rgba(0,0,0,0.4)';
  15.   ctx.strokeStyle = 'rgba(0,153,255,0.4)';
  16.   ctx.save();
  17.   ctx.translate(150,150);

  18.   // 地球
  19.   var time = new Date();
  20.   ctx.rotate( ((2*Math.PI)/60)*time.getSeconds() +
  21.                       ((2*Math.PI)/60000)*time.getMilliseconds() );
  22.   ctx.translate(105,0);
  23.   ctx.fillRect(0,-12,50,24); // 陰影
  24.   ctx.drawImage(earth,-12,-12);

  25.   // 月球
  26.   ctx.save();
  27.   ctx.rotate( ((2*Math.PI)/6)*time.getSeconds() +
  28.                           ((2*Math.PI)/6000)*time.getMilliseconds() );
  29.   ctx.translate(0,28.5);
  30.   ctx.drawImage(moon,-3.5,-3.5);
  31.   ctx.restore();

  32.   ctx.restore();
  33.   
  34.   ctx.beginPath();
  35.   ctx.arc(150,150,105,0,Math.PI*2,false); // 地球軌道
  36.   ctx.stroke();

  37.   ctx.drawImage(sun,0,0,300,300);
  38. }
復(fù)制代碼


引用MOZILLA DEVELOPER NETWORK


轉(zhuǎn)自houoop


【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了基于HTML5 Canvas的3D動(dòng)態(tài)Chart圖表的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
本篇文章主要介紹了HTML5 Canvas 實(shí)現(xiàn)圓形進(jìn)度條并顯示數(shù)字百分比效果示例,具有一定的參考價(jià)值,有興趣的可以了解一下
這篇文章主要介紹了HTML5 Canvas 旋轉(zhuǎn)風(fēng)車?yán)L制,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
這篇文章主要介紹了html5 canvas合成海報(bào)所遇問題及解決方案總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
由于實(shí)際運(yùn)行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會(huì)達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個(gè)自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對(duì)JavascriptAPI的擴(kuò)展。,HTML5中國,中國最大的HTML5中文門戶。
主站蜘蛛池模板: 日本福利视频 | 久久精品欧美一区二区三区不卡 | 日韩视频二区 | 久久精品区| 欧洲精品一区二区 | 久久精品美女 | 中文有码在线 | 欧美性猛交99久久久久99按摩 | 欧美一区二区在线播放 | 中文字幕在线观看一区二区 | 精品国产视频 | 国产精品入口66mio男同 | 天天爱综合 | 日韩一级二级三级 | 一区二区三区四区视频在线观看 | 国产精品区二区三区日本 | 亚洲伊人av| 三级视频网 | 国产精品久久免费 | 一区在线观看 | 国产成人在线观看免费网站 | 国产一区二区三区久久 | 日本国产在线观看 | 亚洲精品一 | 国产精品成人国产乱一区 | 久久久天堂国产精品女人 | 在线播放av网站 | 亚洲丝袜av | 欧美午夜在线观看 | 欧美又大粗又爽又黄大片视频 | 一区二区免费看 | 亚洲 欧美 激情 另类 校园 | 亚洲精品乱码久久久久久蜜桃91 | 日韩一级av毛片 | 亚洲av毛片成人精品 | 一级片久久 | 在线观看91 | 免费看黄色一级片 | 成人香蕉网 | 亚洲女优在线 | 久久久午夜 |