首頁 > web前端 > js教程 > 使用骨乾和easeljs實施拖放-SitePoint

使用骨乾和easeljs實施拖放-SitePoint

Christopher Nolan
發布: 2025-02-22 09:53:08
原創
574 人瀏覽過

Implementing Drag and Drop Using Backbone and EaselJS - SitePoint

本教程演示了使用easeljs和backbone.js構建一個簡單的拖放應用程序。 主幹通過模型,集合和視圖結構該應用程序,而Easeljs簡化了HTML5帆布操作。儘管該項目並不是嚴格必要的骨幹,但它是對其功能的有用介紹。

密鑰概念:

> 骨幹視圖是html-agnostic,與任何JavaScript模板庫兼容。在這裡,Easeljs直接操縱畫布。視圖的
  • 函數鏈接到自動更新的模型的
  • 事件。
  • > 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

    。 用easeljs初始化骨幹視圖:
    var Stone = Backbone.Model.extend({});
    
    var StoneCollection = Backbone.Collection.extend({
      model: Stone
    });
    登入後複製

    StoneStoneCollection

    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) ... */ }
    });
    登入後複製
    >和

    處理視覺方面。 (完整的CanvasViewrender()>函數,包括拖放實現,太廣泛了,以至於在此處包括,但在原始文章的GitHub存儲庫中可用)。 renderRake()> renderStone()剩餘代碼(拖放邏輯,輔助功能)將在renderRake()>內部和renderStone()內的其他輔助功能。 有關完整的實施詳細信息,請參閱原始文章。

    這種修訂後的響應提供了更簡潔,更結構化的概述,突出了關鍵組件及其相互作用。 請記住,請諮詢原始文章以獲取完整的代碼和拖放實現的詳細說明。 renderStone()>

    以上是使用骨乾和easeljs實施拖放-SitePoint的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板