我有一个由3个独立符号组成的动画片段。其中2个符号的alpha补码超过60帧。其中1个符号根本没有补充。所有符号都在不同的层中,并且在第60帧上有第4个空图层,其中有一个关键帧用于动作脚本。
第60帧的动作只是“停止();”
我正在从文档类动态地将movieclip的一个实例添加到舞台上。当我有“停止();”在那里,影片剪辑出现在舞台上并直接跳到第60帧,在那里它成功停止。
没有“停止();”在那里,movieclip完美地播放了alpha补间,但显然是连续循环。
手动调度Event.COMPLETE并监听它也不起作用,我宁愿不这样做。
以下是将movieclip添加到舞台的代码:
//initialize the gameplay, remove title screen.
private function initialize_gameplay():void
{
//remove the title screen
initialize_title_screen(true);
this.screen_transition_obj = new tide_out_video();
this.addChild(this.screen_transition_obj);
this.game_board = new tidepool_gameboard();
this.screen_transition_obj.addEventListener(Event.COMPLETE,swap_transition_video_for_screen);
}
//replace the current transition video with the screen it was transitioning to
private function swap_transition_video_for_screen(e:Event){
this.addChild(this.game_board);
if(this.screen_transition_obj != null){
if(this.getChildByName(this.screen_transition_obj.name)){
this.removeChild(this.screen_transition_obj);
}
this.screen_transition_obj.removeEventListener(Event.COMPLETE, swap_transition_video_for_screen);
this.screen_transition_obj = null;
}
}
movieclip的类是 tidepool_gameboard ,存储对它的引用的文档类的属性是 game_board 。
知道为什么将 stop(); 放在影片剪辑的第60帧上会导致它在没有补间的情况下跳到最后?
立即将影片剪辑添加到舞台而不是由于事件侦听器正常工作,只有在事件列表器中添加了影片剪辑时才会出现此问题。
答案 0 :(得分:0)
我无法相信我忽略了这一点,因为现在它对我来说似乎相当明显。
在问题中发布的代码中,我初始化了一个 this.game_board 的新实例,然后在基于视频剪辑的事件监听器的延迟后将其添加到舞台上。动画正在播放,但是在剪辑添加到舞台之前它正在播放。
感谢收到this question.
的 alecmce我做了他的Event.ADDED_TO_STAGE事件监听器,并且它工作了,这让我意识到MovieClip不会等到它被添加到舞台开始播放自己的时间轴,它只是启动第二个你实例化对象。
这是全新的功能齐全的代码:
//initialize the gameplay, remove title screen.
private function initialize_gameplay():void
{
//remove the title screen
initialize_title_screen(true);
this.screen_transition_obj = new tide_out_video();
this.addChild(this.screen_transition_obj);
this.screen_transition_obj.addEventListener(Event.COMPLETE,swap_transition_video_for_screen);
}
//replace the current transition video with the screen it was transitioning to
private function swap_transition_video_for_screen(e:Event)
{
this.game_board = new tidepool_gameboard();
this.addChild(this.game_board);
if (this.screen_transition_obj != null)
{
if (this.getChildByName(this.screen_transition_obj.name))
{
this.removeChild(this.screen_transition_obj);
}
this.screen_transition_obj.removeEventListener(Event.COMPLETE, swap_transition_video_for_screen);
this.screen_transition_obj = null;
}
}