1

如何阻止所有鼠标触摸输入到我的 Actionscript 3 Starling 游戏中?

基本上我需要在一段时间内忽略所有触摸事件。

4

2 回答 2

3

如果您不希望对象可触摸,则可以禁用“可触摸”属性。当它被禁用时,对象及其子对象都不会再收到任何触摸事件。

无需添加新的显示对象来防止触摸。

this.touchable = false;

于 2013-11-07T18:34:16.703 回答
1

开发了一个快速的解决方案!基本上创建一个与屏幕大小相同的 Quad,并将其添加到最前面的图层。

添加到最前面层文件的 init() 函数:

Starling.current.addEventListener('TOUCH_BLOCKER_ENABLE', touchBlockerEnable);
Starling.current.addEventListener('TOUCH_BLOCKER_DISABLE', touchBlockerDisable);

然后定义这些函数:

private function touchBlockerEnable(e:Event):void
{
    if(!_quad)
    {
        _quad = new Quad(Starling.current.stage.width,Starling.current.stage.height,0xFFE6E6);
        _quad.x = 0;
        _quad.y = 0;
        _quad.alpha = 0.1;
        addChild(_quad);
    }
}

private function touchBlockerDisable(e:Event):void
{
    if(_quad)
    {
        removeChild(_quad);
        _quad = null;
    }
}

调用此函数以激活 Touch Blocker:

Starling.current.dispatchEvent(new Event('TOUCH_BLOCKER_ENABLE'));
于 2013-04-24T19:17:53.823 回答