現在html5小游戲越來越火爆了,由於公司業務的需要,也開發過幾款微信小游戲,用canvas寫的沒有利用什么框架,發現性能一直不怎么好,所以樓主就只能硬着頭皮去學習比較火的Adobe公司出的CreateJS框架,找了很久資料比較少,基本沒什么
中文文檔,很多都是英文文檔(想想我這才過四級,只能借用有道,一點一點看,一點一點翻譯學習),今天我就寫個引子(也是在慢慢學習),寫的不好,大家就不要見笑。
EaselJS是CreateJS Suite中的一個js庫,它可以讓canvas的使用變得簡單,它提供了一個直接了當的創建html5 canvas中使用富媒體、富交互應用的解決方案。
(一)如何使用
先去下載EaselJS框架,然后創建一個舞台canvas元素的舞台stage對象stage=new createjs.Stage('demo'),增加顯示的子對象到舞台上英文就是DisplayObject對象stage.addChild(),然后
渲染render就用stage.update()就可以了。EaselJS 支持功能常用的createjs下相對應的對象:
1.使用圖像就用Bitmap位圖對象。
2.矢量圖形就使用Shape和Graphics對象。
3.動畫Animated 位圖bitmaps 使用 SpriteSheet 和 Sprite 對象。
4.使用文本實例就用Text。
5.包含說有DisplayObjects對象的容器就用Container。
6.控制HTML DOM 元素的使用DOMElement。
所有顯示對象可以添加到舞台stage作為child,或直接吸引到畫布canvas。
使用說明:
所有的在舞台上的顯示對象DisplayObject(除了DOMElement),當使用mouse或touch時可以綁定事件。EaselJS支持 hover、 press和 release events,同時很容易使用drag和drop拖拽的模型。
讓我們看看基本的例子吧:
你可以現在 illustrates里面先去實現模擬,然后去用EaselJS創建Stage和shape去實現效果。
//Create a stage by getting a reference to the canvas
//創建一個階段通過引用到畫布上
stage = new createjs.Stage("demoCanvas");
//Create a Shape DisplayObject.
//創建形狀顯示對象
circle = new createjs.Shape();
circle.graphics.beginFill("red").drawCircle(0, 0, 40);
//Set position of Shape instance.
//設置形狀實例的圓心坐標
circle.x = circle.y = 50;
//Add Shape instance to stage display list.
//增加形狀實例顯示在舞台列表上
stage.addChild(circle);
//Update stage will render next frame
//更新舞台渲染
stage.update();
基本的監聽綁定事件,簡單交互
displayObject.addEventListener("click", handleClick);
function handleClick(event){
// Click happenened
}
displayObject.addEventListener("mousedown", handlePress);
function handlePress(event) {
// A mouse press happened.
// Listen for mouse move while the mouse is down:
event.addEventListener("mousemove", handleMove);
}
function handleMove(event) {
// Check out the DragAndDrop example in GitHub for more
}
結合上面創建的cricle顯示對象即:
//監聽圓形顯示對象,增加事件 displayObject.addEventListener("click", handleClick);
circle.addEventListener("click", handleClick);
function handleClick(event){
// 點擊時發生
alert(11);
}
circle.addEventListener("mousedown", handlePress);
function handlePress(event) {
alert('鼠標按下了')
// 鼠標按下時發生
// 監聽當鼠標按下移動時發生的事件
event.addEventListener("mousemove", handleMove);
}
function handleMove(event) {
// Check out the DragAndDrop example in GitHub for more
console.log('鼠標移動了')
}
基本的動畫例子
//Update stage will render next frame
createjs.Ticker.addEventListener("tick", handleTick);
function handleTick() {
//Circle will move 10 units to the right.
//圓將向右邊以10為單位移動
circle.x += 10;
//Will cause the circle to wrap back
//移動的距離大於舞台的距離,將重新開始
if (circle.x > stage.canvas.width) { circle.x = 0; }
stage.update();
}
最后,EaselJS 也還有其他的功能,也簡單的說一下吧:
1.canvas陰影和CompositeOperation等特性
2.Ticker, a global heartbeat that objects can subscribe to(有點不太懂)
3.濾鏡,就是像ps里面的一下濾鏡遮罩,顏色通道這些。
4.按鈕button的功能,可以很簡單的創建按鈕交互。
5.SpriteSheetUtils 和 SpriteSheetBuilder幫助我們構建和管理SpriteSheet 在運行的時候。
createJS的學習是系列教程,喜歡就請繼續關注下期……一起成長
