小编Leo*_*rez的帖子

在 AS3 中,removeEventListener(Event.ENTER_FRAME) 不起作用

我已经处理这个问题好几天了。我没办法!我似乎无法在任何论坛、文档等的任何地方找到明确的答案。

第一次运行时,或者当我加载下一个级别供用户玩时,一切看起来都很好。但是,如果用户按下 ESC 键加载不同的关卡,则 ENTER FRAME 侦听器不会被删除,而是复制其中的所有触发器,显示玩家运行非常快,而且很时髦,因为它构建在先前的基础之上实例化 ENTER FRAME 侦听器。

我不知道我是否有匿名函数的问题,或者在我的 removeEvent... 命令中引用了一个未知实例...最重要的是,我放弃了,我需要这个有效的帮助!!!

这是代码:

function initPlay():void
{ 
    //code here determining what display object to add to the list and assign it to the currentLevel variable (a movieclip)

    if(userIsLoadingOtherLevel){
        removeEnterFrameListener();
        addChild(currentLevel);
        }
    if(userIsGointToNextLevel)
        addChild(currentLevel);

    currentLevel.addEventListener(Event.ENTER_FRAME, onEnterFrame);
    function onEnterFrame(event:Event):void
    {
        //collision detection, parallax scrolling, etc, etc is done here.
        if(allCoinsCollected)
            loadNextLevel();
        if(ESCKeyPressed)
            ESCKeyPressHandler();
    }
    function loadNextLevel():void
    {
        removeChild(currentLevel);
        newLevelToLoad++
        removeEnterFrameListener();
        initPlay();
    }

    function ESCKeyPressHandler():void
    {
        removeChild(currentLevel);
        initPlay();
    }
    function removeEnterFrameListener();
    {
        currentLevel.removeEventListener(Event.ENTER_FRAME,onEnterFrame) …
Run Code Online (Sandbox Code Playgroud)

event-listener event-handling actionscript-3 enterframeevent game-loop

5
推荐指数
1
解决办法
2万
查看次数