我试图在点击事件时将一个组件绘制到一个容器上,它似乎绘制除了它在容器上不可见之外。这是进一步澄清的代码。
Ext.define("TapCheck.view.NewTap",{
extend: 'Ext.Container',
fullscreen: true,
id: 'tappy',
initialize: function() {
this.callParent(arguments);
var padElement = Ext.get('tappy');
padElement.on(['tap'],
'onTouchPadEvent', this);
},
config: {
flex: 1,
margin: 10,
layout: {
type: 'vbox',
pack: 'center',
align: 'stretch'
},
items: [
{
html: 'Touch here!'
}
]
},
onTouchPadEvent: function(e, target, options, eventController) {
var component = new Ext.draw.Component({
items: [{
type: 'ellipse',
cx: 100,
cy: 100,
rx: 40,
ry: 25,
fillStyle: 'blue'
}]
});
console.log('X: ' + e.getPageX() + ' Y: ' + e.getPageY());
Ext.getCmp('tappy').add([component]);
}
});
请让我知道我错在哪里或者甚至可以做到这一点?
答案 0 :(得分:0)
我已经更新了一些代码。最大的变化是:
id
个配置。不要经常使用它,特别是在定义组件时。initialize
& onTouchPadEvent
函数仅使用this
引用该组件。Ext.create
功能创建组件。试试这个:
Ext.define("TapCheck.view.NewTap",{
extend: 'Ext.Container',
fullscreen: true,
initialize: function() {
var me = this;
me.callParent(arguments);
me.on('tap', me.onTouchPadEvent, this);
},
config: {
flex: 1,
margin: 10,
layout: {
type: 'vbox',
pack: 'center',
align: 'stretch'
},
items: [{
html: 'Touch here!'
}]
},
onTouchPadEvent: function(e, target, options, eventController) {
var component = Ext.create('Ext.draw.Component',{
items: [{
type: 'ellipse',
cx: 100,
cy: 100,
rx: 40,
ry: 25,
fillStyle: 'blue'
}]
});
console.log('X: ' + e.getPageX() + ' Y: ' + e.getPageY());
this.add(component);
}
});