有没有办法根据计时器删除和addListener?

时间:2013-12-10 20:19:22

标签: actionscript-3

我如何在击中一个物体后5秒内禁用角色的控制,然后立即让角色自由移动?到目前为止,我已经能够获得hitTest的代码和删除键盘控件(简单部分),但现在我很难过如何在计时器上设置键盘控件。有帮助吗?我的hitTest和删除控件的代码如下。

if (player.hitTestObject(folder))
{
    trace("success!");
    addChild(myInfo);
    //stops player movement
    stage.removeEventListener(KeyboardEvent.KEY_DOWN,kD);
}
else
{
    addChild(myInfo);
    removeChild(myInfo);
}

代码中的其他问题现在无关紧要(例如else函数中的添加/删除子项。

1 个答案:

答案 0 :(得分:3)

private var m_tmr:Timer = new Timer(5000, 1);

private function someFunc():void
{
    if (player.hitTestObject(folder))
    {
        trace("success!");
        addChild(myInfo);
        //stops player movement
        stage.removeEventListener(KeyboardEvent.KEY_DOWN,kD);
        m_tmr.addEventListener(TimerEvent.TIMER, onTimer);
        m_tmr.start();
    }
    else
    {
        addChild(myInfo);
        removeChild(myInfo);
    }
}

private function onTimer(pEvent:TimerEvent):void
{
    m_tmr.removeEventListener(TimerEvent.TIMER, onTimer);
    stage.addEventListener(KeyboardEvent.KEY_DOWN, kD);
}

每次添加/删除计时器的事件监听器都是为了提高效率;你不断添加/删除它并不重要。