我无法让停止功能在 AS3 中工作



我有一个.swf文件,我正试图在程序中使用它。我不想让它循环,只想在第一帧停止,只在我告诉它的时候更改帧。当我把.swf文件放在舞台上并告诉特定实例停止()时,这是有效的。但我需要它是一个链接到AS3文件的电影剪辑。当我这样做的时候,stop()不再工作,它只是不断循环。

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

它没有给我任何错误或任何东西,但它只是保持循环而不是停止。出于某种原因,当我转到"Convert to Symbol"one_answers"Export For 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文件:包裹{导入flash.display.MovieClip;

public class Brick extends MovieClip
{

public function Brick(myX, myY) {
x = myX;
y = myY;

}

}
}

Put-stop();在MovieClip的时间线的第一帧中。当您希望移动MovieClip时,请从父对象使用gotoAndPlay()。

你不能阻止Brick,因为你在另一个内部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);
}
}
}

最新更新