6

我有一个 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 Image 并粘贴在它下面,那么应该会拾取触摸事件,但是有更好的方法吗?

我也在考虑听舞台上的触摸并做相当于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);
4

2 回答 2

3

尝试在您Quad的.ImageSprite

于 2013-05-24T12:36:17.493 回答
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
        }
    }
于 2013-05-24T12:54:15.503 回答