Rumah >hujung hadapan web >tutorial js >Melaksanakan seret dan jatuhkan menggunakan Backbone dan Easeljs - SitePoint
Konsep Utama:
render()
model untuk kemas kini automatik. change
CanvasView
koleksi, menjadikan batu baru setiap kali ditambah. Mengklik Rake (Rectangle Pink) menambah model batu baru, mencetuskan add
. renderStone()
Persediaan Projek:
Buat struktur direktori ini:
<code>. |-- index.html +-- js |-- main.js |-- models | +-- stone.js +-- views +-- view.js</code>
Termasuk fail JavaScript dan elemen kanvas: index.html
<code class="language-html"><!DOCTYPE html> <title>Drag and Drop with Backbone and EaselJS</title> <canvas id="testcanvas" height="640" width="480"></canvas> </code>
Model tulang belakang:
: js/models/stone.js
<code class="language-javascript">var Stone = Backbone.Model.extend({}); var StoneCollection = Backbone.Collection.extend({ model: Stone });</code>Ini mentakrifkan model
mudah dan Stone
. StoneCollection
memulakan pandangan tulang belakang dengan easeljs:
: js/main.js
<code class="language-javascript">$(document).ready(function() { var stage = new createjs.Stage("testcanvas"); var view = new CanvasView({stage: stage}).render(); });</code>Ini mewujudkan tahap easeljs dan instantiates
. CanvasView
: js/views/view.js
<code class="language-javascript">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) ... */ } });</code>The
memulakan peringkat, koleksi, dan pendengar acara. Fungsi CanvasView
memberikan rake dan batu, dan menetapkan ticker animasi. render()
dan renderRake()
mengendalikan aspek visual. (The Complete renderStone()
dan renderRake()
Fungsi, termasuk pelaksanaan drag-and-drop, terlalu luas untuk dimasukkan ke sini tetapi boleh didapati di repositori GitHub artikel asal). renderStone()
dan fungsi penolong tambahan dalam renderStone()
. Rujuk artikel asal untuk butiran pelaksanaan lengkap. js/views/view.js
Atas ialah kandungan terperinci Melaksanakan seret dan jatuhkan menggunakan Backbone dan Easeljs - SitePoint. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!