天天看點

《HTML5 Canvas遊戲開發實戰》——3.3 自定義畫闆

前面的章節已經将canvas的api大緻介紹完畢了,下面我們來制作一個自定義畫闆,進一步熟悉一下這些api的用法。

3.3.1 畫闆的建立

建立一個畫闆的步驟如下:

(1)當滑鼠按下的時候,開始描畫,此處需要加入滑鼠按下事件。

(2)當滑鼠彈起的時候,結束描畫,此處需要加入滑鼠彈起事件。

(3)在滑鼠按下并且移動的時候,在滑鼠經過的路徑上畫線,此處需要加入滑鼠移動事件。

代碼清單3-22實作了建立一個簡單畫闆的功能。

代碼清單 3-22

運作效果如圖3-38所示。

《HTML5 Canvas遊戲開發實戰》——3.3 自定義畫闆

代碼清單3-22建立了一個黑色畫闆,當滑鼠在畫闆上移動時,随滑鼠的移動會畫出白色線條。

在代碼清單3-22中,下列代碼畫了一個黑色矩形區域,作為畫闆。

下面建立了3個變量,變量onoff用來控制滑鼠是否按下,隻有當滑鼠按下的時候才會開始繪圖。變量oldx、oldy表示滑鼠發生移動前的坐标。

下面設定畫筆的顔色為白色,線寬為4。

下面給canvas添加了滑鼠按下偵聽事件,當滑鼠按下的時候,會調用down函數。

下面給canvas添加了滑鼠彈起偵聽事件,當滑鼠彈起的時候,會調用up函數。

下面給canvas添加了滑鼠移動偵聽事件,當滑鼠在canvas上移動的時候,會持續調用draw函數。

下面看看up、down、draw 3個函數中的内容。

down函數是在滑鼠按下的時候調用的。當調用down函數的時候,會将onoff變量設定為true,表示開始繪圖,并給oldx、oldy賦予滑鼠目前位置的坐标值。

up函數是在滑鼠彈起的時候調用的。當調用up函數的時候,将onoff變量設定為false,表示結束繪圖。

draw函數是在滑鼠發生移動的時候不斷持續調用的。當調用draw函數的時候,首先判斷onoff變量的值,即判斷滑鼠是否處于按下狀态,如果滑鼠處于按下狀态,則開始畫線。

每次畫線時,需要确定線條的起始位置和結束位置,線條的起始位置就是坐标(oldx,oldy),然後把目前滑鼠位置作為線條的結束位置,代碼如下所示:

接着,利用moveto和lineto畫線,代碼如下所示:

上面的代碼是畫一條從坐标(oldx,oldy)到坐标(newx,newy)的線段,并設定了線條的顔色、寬度和線帽的類型。

在此次繪制結束後,新的滑鼠位置将作為下一次畫線的起始位置,代碼如下所示:

上面的代碼已經實作了一個最簡單的畫闆功能。下面将其再完善一下,即加入按鈕操作改變畫筆顔色和線條寬度的功能。完整的代碼如代碼清單3-23所示。

代碼清單 3-23

運作效果如圖3-39所示。

《HTML5 Canvas遊戲開發實戰》——3.3 自定義畫闆

在代碼清單3-23中:

下面的代碼加入了6個按鈕,并加入了單擊事件,當單擊不同按鈕的時候,就會相應地改變畫筆的顔色。

下面的代碼加入了3個按鈕,并加入了單擊事件,當單擊不同按鈕的時候,就會相應地改變線條的寬度。

3.3.2 canvas畫布的導出功能

在3.3.1節中我們建立了一個畫闆,這一節再來給畫闆添加圖檔導出功能,即複制canvas畫闆上的圖像,使其儲存為圖檔格式。

要将canvas畫闆儲存為圖檔格式,隻需要使用下面的方法即可:

現在可在頁面上建立一個< img >标簽,然後将複制的canvas内容用< img>表示出來。完整代碼如代碼清單3-24所示。

代碼清單 3-24

運作效果如圖3-40所示。

《HTML5 Canvas遊戲開發實戰》——3.3 自定義畫闆

如果想要将圖檔儲存為圖檔檔案,還需要借助php或asp等工具,這裡就不做讨論了。

繼續閱讀