javascript - 分机绘制 : how to control sprites?

标签 javascript model-view-controller extjs extjs4

我正在尝试使用 ExtJS4(MVC 方式)制作绘图应用程序。

为此,我想制作几个小部件。这是我的小部件代码:

查看:

Ext.define('VP.view.fields.Field' ,{
    extend: 'Ext.draw.Sprite',
    alias: 'widget.field',

    constructor: function() {
        var parentConfig = {
            id: 'field',
            fill: '#FFFF00',
            type: 'rect',
            width: '100%',
            height: '100%',
            x: 0,
            y: 0
        };
        this.callParent([parentConfig]);
    }
});

Controller :

Ext.define('VP.controller.Fields', {
    extend: 'Ext.app.Controller',

    views: [
        'fields.Field'
    ],

    init: function() {
        console.log('Initialized Field controller!');
        var me = this;
        me.control({
            'field': { //trying to control the widget.field, this fails
            //'viewport > draw[surface]': { //this controls the surface successfully
            //'viewport > draw[surface] > field': { //fails
                click: this.addObject
            }
        });
    },

    addObject : function(event,el){
        console.log(el);
        //console.log(drawComponent);
    }
});

我如何控制这个自定义 Sprite ? Ext.components 只能由 Controller 控制吗? (Ext.draw.Sprite 不扩展 Ext.component)。

最佳答案

除了我之前的回答之外,您还可以在 sprite 上添加监听器并在某个对象上触发事件。然后你可以在 Controller 中捕获它。

例子:

spriteObj....{
    listeners: {
        click: {
            var canvas = Ext.ComponentQuery.query('draw[id=something]')[0];
            var sprite = this;
            canvas.fireEvent('spriteclick',sprite);
        }
    }
}

在 Controller 中:

init: function() {
    console.log('Initialized Field controller!');
    var me = this;
    me.control({
        'draw[id=something]': {
            spriteclick: this.doSomething            
        }
    });
},

doSomething: function (sprite) {
    console.log(sprite);
}

关于javascript - 分机绘制 : how to control sprites?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075053/

相关文章:

extjs - 在自定义组件中动态加载数据

javascript - 如果我的 MVC 4 应用程序构建在 Release模式下触发,我想动态调用我的缩小的 js 文件?

node.js - 在 nodejs 中使用 expressjs、mongoosejs 和 redis 在哪里编写业务逻辑

javascript - ExtJS : Re-selecting the same value does not fire the select event

javascript - JQuery循环遍历多维数组

javascript - 我正在使用 ScrollMagic 和 Greensock,但它在滚动时卡住了

javascript - 使用 jQuery .animate() 时的图像动画问题

javascript - 为 JavaScript 封装 ActiveX

javascript - 打开相对URL以两个 Controller 为前缀

javascript - 如何使 Ext.Panel 宽度覆盖其父表布局的宽度?