我有一个Starling Sprite
我希望获得触摸事件。我正在使用
content.addEventListener(TouchEvent.TOUCH, onTouch);
function onTouch(e:TouchEvent) {
var touch:Touch = e.getTouch(content) as Touch;
if (touch) {
//do something
}
}
但是,这仅在触摸Sprite的子项时才有效,而不是在它们之间的空间中。我想如果我创建一个alpha'd图像并在其下面粘贴它应该接收触摸事件,但有更好的方法吗?
我也在考虑听取舞台上的触摸并做相当于hitTestPoint()
的事情。
我想出了
var hitTest = (touch && content.hitTest(this.globalToLocal(new Point(touch.globalX, touch.globalY))));
但这似乎也不起作用,触摸事件仅在触及内容Sprite的子项时才起作用。
解决方案:
最后我使用了Cherniv建议的alpha'd Quad
bg = new Quad(width, height);
bg.alpha = 0;
addChildAt(bg, 0);
答案 0 :(得分:3)
尝试在Quad
中使用轻量级透明Image
(无需Sprite
)。
答案 1 :(得分:0)
我希望它会对你有所帮助。
content.addEventListener(TouchEvent.TOUCH, onTouch);
function onTouch(e:TouchEvent) {
var touch:Touch = e.getTouch(stage) as Touch;
if(touch && touch.phase == TouchPhase.BEGAN){
//do something
}
}
or
addEventListener(TouchEvent.TOUCH, onTouch);
function onTouch(e:TouchEvent) {
var touch:Touch = e.getTouch(sprite(eve.target)) as Touch;
if(touch && touch.phase == TouchPhase.BEGAN){
//do something
}
}