【问题标题】:Exit Event when move to other frame in AS3在 AS3 中移动到其他帧时的退出事件
【发布时间】:2015-03-03 09:38:48
【问题描述】:

我试图在 AS3 中从一帧移动到另一帧时获取一个事件。

我试过EXIT_FRAME 它总是在调用。 从一帧移动到另一帧时,我需要获取状态。

addEventListener(Event.EXIT_FRAME,exitfunc); 
function exitfunc(e:Event):void{
 trace("EXIT_FRAME");
}

【问题讨论】:

  • “从一帧移到另一帧”是什么意思?举个例子会有所帮助。

标签: actionscript-3 flash events


【解决方案1】:

正如 Nagarajan 建议的那样,您可以动态地将脚本添加到框架中。

例如在你的主课中

package {
  import flash.display.MovieClip;

  public class Test extends MovieClip
  {
      public function Test()
      {
          this.addFrameScript(4,frameFunction); // (add script to frame 5, zero based)
      }

      private function frameFunction():void {
          trace ('Do something when play head enters frame 4')
      }
  }
}

【讨论】:

  • addFrameScript 也会删除之前在该框架中的任何代码,因此对于人们直接向框架添加代码来说,这不是一个非常灵活的解决方案,就像这里的情况一样。
  • 真正的一个缺点是完全删除之前添加到该框架的任何代码,但为什么答案是 -1?是否有问题取决于具体情况。也许 Vineesh TP 知道没有其他人在框架中添加代码?
【解决方案2】:

因为他们的名字具有误导性。 Event.EXIT_FRAME 在播放头退出一帧时不会执行一次。它重复执行。

同样,Event.ENTER_FRAME 不会在播放头进入帧时执行一次。它重复执行。

当播放头进入帧时,你可以通过向帧添加函数调用来执行函数:

f(); // 当播放头进入该帧时,附加到帧将调用函数 f。还有其他方法可以做到这一点。

当播放头存在帧时,您可以通过使舞台无效并在执行 goto 时使用渲染事件来执行函数:

stage.invaidate();
this.addEventListener(Event.RENDER,ExitingF);
this.gotoAndPlay('whatever');
function exitingF(e:Event):void{
     // this code executes when this frame is exited and 'whatever' is rendered
    (=displayed);
}

【讨论】:

    【解决方案3】:

    只有一种好方法,但这可能超出您的技能水平。创建一个扩展 MovieClip 的类并覆盖 gotoAndStop 和 gotoAndPlay 方法,然后简单地使它们调度一个自定义事件(不要忘记对 super 的调用)。该自定义事件可以携带帧标签、索引等……您必须确保您的 MovieClips/Document 类实现该类,并且一切都会自动完成。 这将允许您跟踪何时离开一个框架并通过调用 gotoAndStop 或 gotoAndPlay 移动到另一个框架。如果您只想跟踪正常的播放头移动,那么 ENTER_FRAME 事件就足够了。

    【讨论】:

    • 如果有人只是调用 myMovieclip.play() 或者没有人对影片剪辑调用“播放、gotoAndPlay() 或 gotoAndStop()”,并且影片剪辑的第一帧没有停止,该怎么办? Flash 只是继续循环播放影片剪辑而不通知程序退出或进入任何帧
    • 这就是为什么我说如果是这种情况输入框架更适合该目的。
    猜你喜欢
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    相关资源
    最近更新 更多