无法在Ext.draw.Container构造函数中添加子画面

时间:2018-08-30 12:26:14

标签: javascript extjs

我正在尝试创建一个头像类,当在应用程序的不同部分中使用时,头像类的大小可以不同。基本头像如下:

Ext.define('Avatar', {
    extend: 'Ext.draw.Container',
    width: 60,
    height: 60,
    sprites: [{
        type: 'circle',
        fillStyle: '#79BB3F',
        r: 30,
        x: 30,
        y: 30
    }, {
        type: 'text',
        x: 30,
        y: 30,
        text: 'AU',
        textAlign: 'center',
        textBaseline: 'middle',
        fontSize: 30
    }]
});

https://fiddle.sencha.com/#view/editor&fiddle/2ks4

为了能够制作可变大小的化身,我重写了构造函数并在其中添加了sprite,然后可以在其中用变量替换固定大小:

Ext.define('Avatar', {
    extend: 'Ext.draw.Container',
    width: 60,
    height: 60,
    constructor: function() {
        var me = this;
        Ext.apply(me, {
            width: 30, // Changing component size works, ...
            height: 30,
            sprites: [{ // but sprites do not work!
                type: 'circle',
                fillStyle: '#79BB3F',
                r: 30,
                x: 30,
                y: 30
            }, {
                type: 'text',
                x: 30,
                y: 30,
                text: 'AU',
                textAlign: 'center',
                textBaseline: 'middle',
                fontSize: 30
            }]
        });
        me.callParent(arguments);
    }
});

https://fiddle.sencha.com/#view/editor&fiddle/2kv1

可以通过构造函数更改头像大小;添加精灵不起作用。我如何使它工作?

1 个答案:

答案 0 :(得分:1)

改为覆盖initComponent:

initComponent: function() {

    var sprites =[{
        type: 'circle',
        fillStyle: '#79BB3F',
        r: 30,
        x: 30,
        y: 30
    }, {
        type: 'text',
        x: 30,
        y: 30,
        text: 'AU',
        textAlign: 'center',
        textBaseline: 'middle',
        fontSize: 30
    }];

   this.setSprites(sprites);

}