AS2:如何删除onEnterFrame?

时间:2014-10-24 21:22:50

标签: flash actionscript-2

对于我的生活,我不能让这个事件停止。我最初在AS3中编写了这段代码,但是当我的项目经理给我规格时,他们想要在AS2中。并不是什么大不了的事,大多数代码只需要一些调整。

然而,在这一部分中,我向后播放一个动画片段的一小部分(作为退出动画,与其前奏动画相反)。在AS3中,它顺利进行:

function playExit() {
     this.gotoAndStop(MovieClip(root).exitLabel);
     this.addEventListener(Event.ENTER_FRAME, playBackwards);
}
function playBackwards(e:Event) {
     this.prevFrame();
     if(this.currentFrame == 1) {
          this.removeEventListener(Event.ENTER_FRAME, playBackwards);
          finishExit();
     }
}

现在我试图将其转换为AS2。似乎 应该像这样工作:

function playExit() {
     this.gotoAndStop(_root.exitLabel);
     this.onEnterFrame = function() {
          playBackwards();
     }
}
function playBackwards() {
     trace('Backwaaaaaaaaards, woooo!!');
     this.prevFrame();
     if(this.currentFrame == 1) {
          delete this.onEnterFrame;
          trace('Backwards Completed.');
          finishExit();
     }
}

然而,即使在我的" Backwards Completed之后,似乎我的小快乐向后跟踪语句仍然在运行(因此没有被删除)。"显示在输出中。因此,当动画循环时,它甚至根本不会显示,因为它仍在尝试向后运行。没有编译错误,我没有收到任何其他错误。我错过了什么吗?

为Flash Player 8,AS2设置发布设置。

请,谢谢你。

编辑:我的事件尝试了这样,因为我认为它可能是一个范围问题,但它只会使它变得更糟,因为它甚至没有倒退(电影剪辑停留在舞台上)。

function playExit() {
     this.gotoAndStop(_root.exitLabel);
     this.onEnterFrame = function() {
          trace('Backwaaaaaaaaards, woooo!!');
          this.prevFrame();
          if(this.currentFrame == 1) {
               delete this.onEnterFrame;
               trace('Backwards Completed.');
               finishExit();
          }
     }
}

1 个答案:

答案 0 :(得分:0)

我是个白痴。这一切都发生在我发布问题之后。

原来是“向后完成”。从来没有拉过我的输出(我跑ctrl F来找到它,它不在那里,这是一个不同的跟踪声明,让我相信它出现了。)

无论如何,我忘了改变

this.currentFrame

this._currentFrame

再次感谢,伙计们。