91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

html5游戲開發--"動靜"結合(一)-動態畫面的實現

發布時間:2020-08-10 19:59:03 來源:網絡 閱讀:6015 作者:yorhomwang 欄目:開發技術

 

一、前言

很久沒寫文章了。。。也不知大家還記不記得以前給大家的承諾——寫幾篇有關html5開發游戲的文章。今天總算有時間了,不過我還得抓緊時間,因為種種原因,明天我還得投入緊張的工作之中。

言歸正傳,現在讓我們來說說html5開發游戲。有的朋友認為html5開發游戲不就是用javascript開發嗎?游戲中的圖片可以用<img>貼上去嗎?何必還用什么html5嘛。(或許大家都不是這樣認為的,但我初學html5時就是這樣想的。因此才出現了前面我寫的有關javascript開發《三國志曹操傳》的系列文章)但并不是這樣的,html5開發游戲主要用的是<canvas>標簽,<canvas>里的圖片是不可以拖動復制的,而<img>是可以的。因此這就體現了html5開發游戲的關鍵。不過在<canvas>里貼圖可不是用一個src屬性可以解決的,它要用javascript貼上圖片。。。畢竟開發游戲可不是那么簡單的工程嘛。。。(廢話又多說了兩句,不過以前曾有為朋友對我說,正是有了這些廢話,才使文章"生動"起來的)

接下來我要向大家揭示html5開發游戲的內幕。

 

二、"動"的體現

html5究竟是怎樣使靜態的圖片變為動態的呢?請看以下分析。

首先我們準備幾張圖片:  

 

html5游戲開發--"動靜"結合(一)-動態畫面的實現 html5游戲開發--"動靜"結合(一)-動態畫面的實現 html5游戲開發--"動靜"結合(一)-動態畫面的實現
01.png 02.png 03.png

還是老圖片,不過不是老代碼:

 

main.js里的代碼:

 

[javascript] view plaincopy
 
  1. window.onload = function(){  
  2.     setInterval(function(){main();}, 150);  
  3. };  
  4.   
  5. var pic1 = "./01.png";  
  6. var pic2 = "./02.png";  
  7. var pic3 = "./03.png";  
  8.   
  9. var picArry = [pic1, pic2, pic3];  
  10.   
  11. var newImgName = new Image();  
  12. newImgName.src = pic1;  
  13.   
  14. var picArrsub = 0;  
  15.   
  16. function main(){  
  17.     var cElem = document.getElementById("CANVAS");  
  18.     var cxt = cElem.getContext("2d");  
  19.   
  20.     cxt.clearRect(0, 0, 300, 300);   
  21.     cxt.drawImage(newImgName,100,100);  
  22.     cxt.save();  
  23.     //處理圖片  
  24.   
  25.     if(picArrsub >= picArry.length - 1){  
  26.         picArrsub = 0;  
  27.     }else{  
  28.         picArrsub += 1;  
  29.     }  
  30.   
  31.     newImgName.src = picArry[picArrsub];  
  32. }  

以上是鄙人寫的javascript代碼,但是眾所周知,既然是叫html5而不是javascript5,說明html代碼也至關重要。

 

接下來是html5代碼:

 

[html] view plaincopy
 
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <title>test</title>  
  5. <script type="text/javascript" src="./main.js"></script>  
  6. </head>  
  7. <body>  
  8.   
  9. <canvas id="CANVAS" width="300px" height="300px" style="border:2px solid #c3c3c3; z-index:1;">  
  10.     Your browser does not support the canvas element. Please update your browser or download other browsers support html5.  
  11. </canvas>  
  12.   
  13.   
  14. </body>  
  15. </html>  

解釋一下:

 

<canvas>是html5新加標簽,估計就是專門為開發游戲設計的。首先我們得對這個新加進來的標簽添加id屬性,這樣就方便大家在javascript里操作了。具體一些信息可以看看w3cschool:http://www.w3school.com.cn/html5/html_5_canvas.asp

html代碼就解釋到此,接下來講講javascript里的代碼:

 

[javascript] view plaincopy
 
  1. var pic1 = "./01.png";  
  2. var pic2 = "./02.png";  
  3. var pic3 = "./03.png";  
  4.   
  5. var picArry = [pic1, pic2, pic3];  

這段寫得較明了,同樣是把幾張圖片放進數組,這樣方便以后循環播放圖片。

 

 

[javascript] view plaincopy
 
  1. var newImgName = new Image();  
  2. newImgName.src = pic1;  

這段代碼是建立一個貼圖片的區域,并且給src賦值為pic,也就是剛才定義的變量,也就是./01.png

 

 

[javascript] view plaincopy
 
  1. function main(){  
  2.     var cElem = document.getElementById("CANVAS");  
  3.     var cxt = cElem.getContext("2d");  
  4.   
  5.     cxt.clearRect(0, 0, 300, 300);   
  6.     cxt.drawImage(newImgName,100,100);  
  7.     cxt.save();  
  8.     //處理圖片  
  9.   
  10.     if(picArrsub >= picArry.length - 1){  
  11.         picArrsub = 0;  
  12.     }else{  
  13.         picArrsub += 1;  
  14.     }  
  15.   
  16.     newImgName.src = picArry[picArrsub];  
  17. }  

這一段代碼是該程序的主要部分。貼圖,切換圖片,處理圖片都在這里。首先我取出canvas的id,然后繪圖,圖的src在一個用if()...else的死循環中反復切換,每切換一次就用setInterval()重復調用main()函數,由于src切換,因此重復調用main()時,又會重新繪圖,導致圖片無限的循環切換。

 

[javascript] view plaincopy
 
  1. cxt.clearRect(0, 0, 300, 300);   
  2. cxt.drawImage(newImgName,100,100);  
  3. cxt.save();  

這段代碼是什么意思呢?首先為了不讓畫出的圖不出現重疊——drawImage()函數畫出的圖是不會因下次要畫圖象而把上次畫的清空的。所以如果不主動清空畫布,那就會出現這次畫的疊在上次畫的上面,因此我首先用clearRect()函數把畫布清空,這樣的話就不會有重疊了。(cleatRect語法如下:cleatRect(移至的x坐標,移至的y坐標, 清空部分的寬度, 清空部分的高度);)

 

drawImage想必大家都知道,具體語法如下:drawImage(要畫出對象的名稱, 移至的x坐標, 移至的y坐標);


代碼下載地址就不給了,直接復制代碼吧。。。(各位讀者且勿介意呀。。。)

demo演示位置:

http://www.cnblogs.com/yorhom/archive/2013/04/04/3000278.html

 

----------------------------------------------------------------

歡迎大家轉載我的文章。

轉載請注明:轉自Yorhom's Game Box

歡迎繼續關注我的博客

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北安市| 清丰县| 绵阳市| 沾益县| 石家庄市| 锡林郭勒盟| 福清市| 上林县| 秭归县| 鲁山县| 玉山县| 大名县| 平利县| 嵩明县| 青岛市| 鄂伦春自治旗| 洪洞县| 武清区| 贵定县| 禹城市| 东乌珠穆沁旗| 文水县| 荥阳市| 鄯善县| 襄汾县| 舞阳县| 陇川县| 新乐市| 平遥县| 安庆市| 古蔺县| 丘北县| 靖远县| 沧州市| 清河县| 东乌| 南木林县| 四会市| 乳山市| 宣武区| 昌宁县|