2014-03-05 32 views
0

我有一個.swf文件,我試圖在我的程序中使用。我不希望它循環,只是爲了停止在第一幀,並且只在我告訴它時改變幀。當我將.swf文件放在舞臺上並將特定實例告訴stop()時,這將起作用。但我需要它是一個連接到AS3文件的影片剪輯。當我這樣做時,stop()不再工作,它只是保持循環。我不能得到停止功能在AS3中工作

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

它不給我任何錯誤或任何東西,但它只是保持循環而不是停止。出於某種原因,當我轉到「轉換爲符號」和「導出爲ActionScript」(這是我如何讓所有其他對象跟隨其代碼)時,stop()函數不再起作用。我究竟做錯了什麼?

編輯:好吧,這裏是主文件(我切出,因爲他們沒有影響磚否則這將是很長與其他物體的部分)

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 file: package { import flash.display.MovieClip;

public class Brick extends MovieClip 
    { 


     public function Brick(myX, myY) { 

      x = myX; 
      y = myY; 


     } 



    } 
} 
+0

是類文件連續控制使用'gotoAndPlay'資產?如果是這種情況,調用'stop()'不會起作用。 –

+0

我的代碼中沒有gotoAndPlay。我已經嘗試從父級調用stop(),並且我也嘗試將stop()放在Brick的構造函數中。我也試過gotoAndStop(1),這也不起作用。 – user3384588

+0

brick movieclip是否在其時間軸上有代碼?檢查是否有錯誤。 –

回答

0

Put stop();在MovieClip的時間軸的第一幀中。當您想要MovieClip移動時,使用父級的gotoAndPlay()。

+0

這很可能是因爲用戶在這個問題上的詳細信息,這不是答案,用戶已經調用stop()並繼續循環。 –

+0

如何在時間線中編寫代碼?我可能錯過了一些非常明顯的東西,但我無法弄清楚如何打開它。 – user3384588

+0

那麼,.swf的代碼在哪裏呢?你在使用Flash嗎? – Craig

0

您無法停止Brick,因爲您在另一個內部MovieClip中製作了他的循環動畫?如果你有內部的影片剪輯,你也應該阻止它們。在時間軸上給他們一些名字,例如:myAnimation並停止它們。 myBrick.myAnimation.stop()

如果辛苦你們了,使用這個代碼片斷,它會阻止你的磚是肯定的,這些方法添加到類磚:

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); 
     } 
    } 
}