3月 21

用flash authoring tool做项目时,当在指定帧的舞台上事先放好了MovieClip,并取好实例名,用Event.ENTER_FRAME监听,到动画播放到指定帧后,你无法立刻获得当前帧的stage上的实例,总是会延迟一帧。

这就很郁闷,当有些实例,你希望到指定帧后,先不显示,或动态改变一些属性,你会发现,它先会按实际样子闪现一下。

原来只有两种方法,第一,先不把实例放舞台,在库里改属性,到时再new进来。第二,就是把舞台实例的alpha透明度调成0。都很不爽。

最近研究stage、文档类、时间轴类的关系时,再次发现addFrameScript,很以前就见过,但没深究。这次总算派上用场了。哈哈。用addFrameScript可以在播放头到达指定帧后立即取得当前帧舞台上的实例。上代码。

package
{
  import flash.display.*;
  import flash.events.*;
  public class Main extends MovieClip
  {
    public function Main()
    {
      this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    public function onEnterFrame(e:Event)
    {
      if (currentFrameLabel == "yi" || currentFrameLabel == "er")
      {
        this.addFrameScript(currentFrame-1, frameScript);
      }
    }
    public function frameScript()
    {
      this.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
      this.stop();
      if (currentFrameLabel == "yi")
      {
        MovieClip(yi).alpha = .2;
      }
    }
  }
}

written by panhezeng \\ tags:

Leave a Reply

Me

点这和我talk,panhezeng@gmail.com