我有一个.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;
}
}
}
答案 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);
}
}
}