在Sencha Touch Charts 2 beta发行版中,绘图指南示例代码中有一个Sprite监听触摸开始的示例。给出的代码无法绘制任何精灵,因为它无法在DOM上插入画布。但是,可以通过替换它来解决这个问题:
//add the component to the panel
Ext.create('Ext.chart.Panel', {
fullscreen: true,
title: 'Yellow Circle',
items: drawComponent
});
用这个:
//add the component to the panel
Ext.create('Ext.chart.Panel', {
fullscreen: true,
title: 'Yellow Circle',
chart: drawComponent
});
现在,我真的想让事件处理工作。示例代码继续:
// Add a circle sprite
var myCircle = drawComponent.surface.add({
type: 'circle',
x: 100,
y: 100,
radius: 100,
fill: '#cc5'
});
// Now do stuff with the sprite, like changing its properties:
myCircle.setAttributes({
fill: '#ccc'
}, true);
// Remember always to refresh the image
drawComponent.surface.renderFrame();
// or animate an attribute on the sprite
// no need to refresh the image when adding animations.
myCircle.fx.start({
fill: '#555'
});
// Add a touch listener to the sprite
myCircle.addListener('touchstart', function() {
alert('touchstarted!');
});
但最后的警报从未发生过触摸。有什么想法吗?
drawComponent.addListener('touchstart'...工作正常,但当然没有本地化为圆形精灵。
---经过更多调查---
我认为答案很简单就是精灵上的事件处理尚未实现。例如在touch-charts / src / draw / engine / Canvas.js中我们有Ext.draw.engine.Canvas的定义,
getSpriteForEvent: function(e) {
return null; //TODO!!!
},
好的 - 是时候改变'如何?'的问题了到'什么时候?':
'Sencha Touch何时支持Sprite事件处理?“