无法在Ext.draw.Container构造函数中添加精灵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Ext.draw.Container构造函数中添加精灵相关的知识,希望对你有一定的参考价值。

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

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

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

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

可以通过构造函数更改头像大小;添加精灵不起作用。我怎样才能让它发挥作用?

答案

改为覆盖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);

}

以上是关于无法在Ext.draw.Container构造函数中添加精灵的主要内容,如果未能解决你的问题,请参考以下文章

为啥无法在类上找到适当的构造函数

为啥这个构造函数无法在 Codeigniter 中加载?

无法为 Encoder.h 构建包装类,在调用包装类构造函数之前调用了编码器构造函数

MEF依赖注入无法在在构造函数中使用的解决办法

无法在 CodeIgniter 构造函数中退出

无法在 javascript 中初始化 XSLTProcessor 构造函数