触摸starling sprite中空白空间的事件

时间:2013-05-24 12:16:01

标签: actionscript-3 flash touch starling-framework

我有一个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);

2 个答案:

答案 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
        }
    }