首页 > web前端 > js教程 > 使用骨干和easeljs实施拖放-SitePoint

使用骨干和easeljs实施拖放-SitePoint

Christopher Nolan
发布: 2025-02-22 09:53:08
原创
576 人浏览过

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
    作者最新文章
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板