添加stop();到时间轴上的动画片段导致所述动画片段中的补间不能播放,动画片段只是跳到最后

时间:2012-05-11 03:50:05

标签: actionscript-3 flash actionscript flash-cs5

我有一个由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帧上会导致它在没有补间的情况下跳到最后?

更新

立即将影片剪辑添加到舞台而不是由于事件侦听器正常工作,只有在事件列表器中添加了影片剪辑时才会出现此问题。

1 个答案:

答案 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;
        }
    }