我不能让停止功能在AS3中工作

时间:2014-03-05 17:07:48

标签: actionscript-3 flash

我有一个.swf文件,我正在尝试在我的程序中使用。我不希望它循环,只是停在第一帧,只在我告诉它时改变帧。当我将.swf文件放在舞台上并告诉该特定实例为stop()时,这种方法有效。但我需要它是一个链接到AS3文件的Movie Clip。当我这样做时,stop()不再起作用,它只是循环。

        mybrick = new Brick(0, 0);
        addChild( mybrick );
        mybrick.stop();

它没有给我任何错误或任何东西,但它只是循环而不是停止。出于某种原因,当我转到“转换为符号”和“导出为ActionScript”(这是我使所有其他对象遵循其代码的方式)时,stop()函数不再起作用。我做错了什么?

编辑:好的,这是主文件(我删除了与其他对象相关的部分,因为它们不会影响Brick,否则这将会很长)

package
{
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.display.Stage;
import flash.events.Event;
import flash.ui.Keyboard;
import flash.utils.Timer;
import flash.events.TimerEvent;


public class RetrievoidGame extends MovieClip
{


    public var mybrick:Brick;

    public function RetrievoidGame()
    {


        mybrick = new Brick(0, 0);
        addChild( mybrick );
        mybrick.stop();



        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);

        var newTimer = new Timer( 1 );
        newTimer.addEventListener( TimerEvent.TIMER, everyFrame );
        newTimer.start();

    }

这是Brick.as文件:             包             {         import flash.display.MovieClip;

    public class Brick extends MovieClip
    {


        public function Brick(myX, myY) {

            x = myX;
            y = myY;


        }



    }
}

2 个答案:

答案 0 :(得分:0)

put stop();在 MovieClip的时间轴的第一帧中。如果希望MovieClip移动,请使用父级的gotoAndPlay()。

答案 1 :(得分:0)

你不能阻止Brick,因为你制作的循环动画,在另一个内部的MovieClip?如果你有内在的MovieClip,你也应该阻止它们。在时间轴上给他们一些名字,比如:myAnimation并停止他们。 myBrick.myAnimation.stop()

如果您觉得难,请使用此代码段,它肯定会停止您的Brick,将这些方法添加到Class Brick中:

override public function stop():void {
    super.stop();
    stopMovies(this);
}

private function stopMovies(movie:MovieClip):void{
    var i: uint, len:uint = movie.numChildren, child:MovieClip;
    for(i; i < len; ++i){
        child = movie.getChildAt(i) as MovieClip;
        if(child != null){
            child.stop();
            stopMovies(child);
        }
    }
}