html5 Game開發系列文章之 一 精靈(上)


  在此之前,建議安裝最新版火狐瀏覽器或者Chrome,編輯器我使用的是Dreamweaver,當然,記事本也可以,只要滿足這些條件,那么,一切都已經准好了,我們可以開始神奇的html5之旅了!

 

  首先,我們建立一個基本的html5頁面

 

<!DOCTYPE html> 
<html>
<head>
<meta charset="utf-8">
<title>DEMO</title></head>
<body>
<canvas id="scene" width="800" height="600"></canvas>
</body>
</html>

 

  對比XHTML,它的頭部申明變短了,不需要加入那長長的一串URL地址了,而且meta標簽的申明也簡化了!這 里我們就建立了一個基本的html5頁面,使用UTF-8編碼!而且我們還使用了一個canvas標簽!html5通過canvas提供了相關圖形處理接口,我們通過它就可以處理各種各樣的圖形了,在canvas中我們可以繪制各種圖形,比如矩形,圓行,直線,曲線等,同時出可以繪制各種現有圖片!

下面的例子,我將在canvas(下稱為畫布)上繪制一張小圖片(精靈)(在這里,我假定大家已經知道了幀與Sprite(精靈)的概念!如果對這兩個概念不了解的自行查詢)!

 

var ctx = document.getElementById("scene").getContext("2d");
var img = new Image();
img.onload=function(){
ctx.drawImage(img,0,0,75,70,0,0,75,70);
}
img.src="dragon.gif";

 

  顯示結果:

 

   我們成功在畫布上畫出一個精靈,第一行通行getContext("2d")獲得了一個CanvasRenderingContext2D對象,然后創建了一個Image對象,並在Image加載完成的事件中,使用drawImage方法將我們的精靈繪制到了畫布上!

  看起來很簡單,好像也沒有什么激動人心的,是的,只是一張小小的圖片,不過一切復雜的事物不都是加簡單的東西組成的嗎?我們先來看一下drawImage方法的相關參數:

  drawImage有多個參數的重載!最多為九個,下面以以九個參數為例解釋下各個參數的作用:drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)

 

參數

參數

說明

參數1

image

圖片

參數2

sx

圖片裁剪的X位置

參數3

sy

圖片裁剪的Y位置

參數4

sw

裁剪的寬度

參數5

sh

裁剪的高度

參數6

dx

畫布的X位置

參數7

dy

畫布的Y位置

參數8

dw

繪制到畫布上的寬

參數9

dh

繪制到畫布上的高

 

 

  所有方法如下:

  void drawImage(in HTMLImageElement image, in float dx, in float dy, optional in float dw, in float dh); 
void drawImage(in HTMLImageElement image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh);
void drawImage(in HTMLCanvasElement image, in float dx, in float dy, optional in float dw, in float dh);
void drawImage(in HTMLCanvasElement image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh);
void drawImage(in HTMLVideoElement image, in float dx, in float dy, optional in float dw, in float dh);
void drawImage(in HTMLVideoElement image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh);

 

  利用CanvasRenderingContext2D對象還可以進行像素級的操作,這個我將會在后期講到,目前只要利用drawImage方法就可以做出很多有趣的東西來了!

 

  下面我們來做一個會動的精靈!其實每個動畫,都是由一張一張的圖片(幀)快速切換而得到的!下面,我們將利用這個原理,每隔一定時間,從下面的圖片上截取一張小圖片繪制到畫布上,形成動畫,讓小紅龍扇動翅膀!

  首先要用到一張大圖: 

  

 

  代碼:

var ctx = document.getElementById("scene").getContext("2d");
var img = new Image();
var x =0;
img.onload=function(){
setInterval(function(){
if(x>=9){
x=0;
}else{
x++;
}

ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.drawImage(img,x * 75,0,75,70,n,0,75,70);
},50)
}
img.src="1.jpg";

 

  在這里,使用了定時器,每隔50毫秒(注意,這個不一定是准確數字)就會在圖片截取一張75 * 70像素大小的小圖並繪制出來,且每次向右移75像素,直到到最右端時重新從0開始,不停循環!小紅龍就開始不停扇動翅膀了!

 

  動態圖就不放出來了,大家可以下載下面的文檔直接在本地演示!

 

  今天本文暫時就到這里,下一節演示如何讓小紅龍開始飛行,與碰撞檢測。並附上一個小特效!

 

  下載地址:http://files.cnblogs.com/hnvvv/html5_Game_L1.rar

  目錄:http://www.cnblogs.com/hnvvv/archive/2012/01/09/2317336.html

 

  第一次寫這樣的東西,發現挺累的!Orz...

 

  1月12日補充:回頭看了看前兩天寫的這篇文章,突然發現其實這些內容在網上都可以找得到,於是猶豫了,好吧,我承認我有點虎頭蛇尾,我在想這樣的內容有沒有必要繼續寫下去,我的大致打算是這樣的,第一部分寫一下HTML5的基本知識,第二部分封裝部分代碼,實現可重利用,第三部分,處理地圖,效果,與刷怪等內容。但是我現在有點猶豫,要不要繼續寫下去呢?新來的朋友給點意見吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM