本教程演示了使用easeljs和backbone.js構建一個簡單的拖放應用程序。 主幹通過模型,集合和視圖結構該應用程序,而Easeljs簡化了HTML5帆布操作。儘管該項目並不是嚴格必要的骨幹,但它是對其功能的有用介紹。
密鑰概念:
render()
> change
聽集合的CanvasView
。
Easeljs管理視覺元素,而backbone.js處理數據和邏輯,為拖放實現創建了有效的組合。 add
>
renderStone()
創建此目錄結構:
包括JavaScript文件和一個帆布元素:
<code>. |-- index.html +-- js |-- main.js |-- models | +-- stone.js +-- views +-- view.js</code>
骨幹模型:index.html
<!DOCTYPE html> <html> <head> <title>Drag and Drop with Backbone and EaselJS</title> </head> <body> <canvas id="testcanvas" height="640" width="480"></canvas> <🎜> <🎜> <🎜> <🎜> <🎜> <🎜> <🎜> <🎜> </body> </html>
:
這定義了一個簡單的模型和ajs/models/stone.js
。
var Stone = Backbone.Model.extend({}); var StoneCollection = Backbone.Collection.extend({ model: Stone });
Stone
StoneCollection
:
js/main.js
這會創建一個easeljs階段並實例化
$(document).ready(function() { var stage = new createjs.Stage("testcanvas"); var view = new CanvasView({stage: stage}).render(); });
CanvasView
:
js/views/view.js
<>>初始化舞台,收集和事件聽眾。
var CanvasView = Backbone.View.extend({ initialize: function(args) { this.stage = args.stage; this.stage.enableMouseOver(20); this.collection = new StoneCollection(); this.rakeOffsets = { /* ... (rake dimensions) ... */ }; this.listenTo(this.collection, "add", this.renderStone, this); this.listenTo(this.collection, "remove", this.renderRake, this); this.listenTo(this.collection, "reset", this.renderRake, this); }, render: function() { this.renderRake(); this.stage.update(); createjs.Ticker.addEventListener("tick", this.stage); createjs.Ticker.setInterval(25); createjs.Ticker.setFPS(60); }, renderRake: function() { /* ... (rake rendering and click handler) ... */ }, renderStone: function(model) { /* ... (stone rendering and drag-and-drop logic) ... */ } });
處理視覺方面。 (完整的CanvasView
和render()
>函數,包括拖放實現,太廣泛了,以至於在此處包括,但在原始文章的GitHub存儲庫中可用)。 renderRake()
>
renderStone()
剩餘代碼(拖放邏輯,輔助功能)將在renderRake()
>內部和renderStone()
內的其他輔助功能。 有關完整的實施詳細信息,請參閱原始文章。
這種修訂後的響應提供了更簡潔,更結構化的概述,突出了關鍵組件及其相互作用。 請記住,請諮詢原始文章以獲取完整的代碼和拖放實現的詳細說明。 renderStone()
>
以上是使用骨乾和easeljs實施拖放-SitePoint的詳細內容。更多資訊請關注PHP中文網其他相關文章!