2013-05-18 127 views
-1

請幫助我將此代碼更新到AS3,它在AS2中。我正在學習ActionScript,所以它對我來說仍然是一個怪物......請對我輕鬆一點。學習工藝

stop(); 
particles_mc.duplicateMovieClip.visible = false; 
trace ("undefined term") 
var i:Number = 0; var 
total:Number = 100; 
for (; i < total; i++) 

{ 

particles_mc.duplicateMovieClip. ("particles_ 
mc"+i,i); 
this["particles_mc"+i]._rotation = Math.floor. 
(Math.random() * 360); 
this["particles_mc"+i].gotoAndPlay (Math.random 
() * particles_mc.MovieClip.totalFrames)); 

} 

Help Stack!

回答

1

這看起來不錯。在AS3中有幾種方法不再可用(主要是爲了更好)。我會在下面解釋。


duplicateMovieClip已在AS3中棄用。在AS3中沒有簡單的「重複」方法,但有幾種方法來製作一個movieclip(mc)的多個副本。

4as,一個致力於flash編程的博客,給出了一些非常好的示例/教程來實現這些方法,但我最喜歡的(我相信最簡單的)是僅僅創建一個自定義的類將會多次使用(「重複」)。

首先轉到庫中的mc並右鍵單擊以顯示屬性選項。打開Symbol屬性窗口後,選中「Export for actionscript」框並記住「Class」文本框中的文本。 * 如果在符號屬性窗口中看不到這些選項,請確保您的高級選項可見。

現在你已經創建了一個類爲您的三菱商事,在你的代碼,你可以很容易,只要你想通過寫作創造了MC的副本:

//this creates a new movieclip called mc that is a 
//duplicate of the movieclip class you created. 
    //replace className with the text from the "Class" 
    //textbox in the symbol properties window 
var mc:MovieClip = new className(); 

爲了把這個複製MC上階段,調用addChild()addChildAt()方法:

//adds a movieclip to the stage 
addChild(mc); 
//adds a movieclip to the stage at a certain depth 
addChildAt(mc,0); 

_rotation在AS3不再使用。而不使用下劃線使用rotation

//rotate movieclip by a certain amount 
mc.rotation=180; 

totalFrames其實在技術上是AS3(_totalFrames在AS2)。但是,您稱之爲不正確。而不是說mc.MovieClip.totalFrames這是要求的movieclip幀內稱爲mc的movieclip的總幀數,你只需要說mc.totalFrames。這要求在動畫片段mc內的幀總數,在這種情況下,這是我們想要的。


這裏是你的代碼重新寫在AS3服用這些變化考慮在內(並且以位修正爲忘記括號和奇怪的間距):

//create the invisible starting mc **Not actually necessary** 
/* 
var start_mc:MovieClip = new part(); 
addChild(start_mc).visible = false; 
*/ 
//initialize i 
var i:Number = 0; 
//initialize total 
var total:Number = 100; 
//loop i to total 
for(;i<total;i++){ 
    //Create a new mc 
    var mc:MovieClip = new part(); 
    //Add that mc to the stage and name it "mc" followed by the number "i" 
    addChildAt(mc,i).name="mc"+i; 
    //rotate mc random number of degrees 0-359 
    mc.rotation=(Math.floor(Math.random() * 360)); 
    //gotoAndPlay (do you really mean play?) random frame 
    mc.gotoAndPlay(Math.floor(Math.random()*mc.totalFrames)+1); 
} 

您可能注意到,我沒有使用this["mc"+i]在創建後更改動畫片段。在as3中,您可以通過您用來創建它的變量來引用新創建的動畫片段。在這種情況下,mc。但是,如果您不信任此方法,或者稍後需要逐個更改每個mc,則可以使用getChildByName()方法。

this.getChildByName("mc"+i).rotation=180; 

我希望這有助於!

編輯:

Working example

我加入隨機縮放,使其更漂亮。

嘗試下載的.fla看到代碼和影片剪輯是如何構成的。

+0

我很欣賞這一點,非常感謝你。我將再次來到這裏,事實上,這是我的家!不要厭倦了我 – Guyz

+0

如果這對你有幫助,請務必點擊左邊的複選標記以接受答案。 – Enigmadan

+0

Enigmadan,它確實幫了很大忙,謝謝。我的小問題雖然是顆粒/星星我打算不再生,發射和來自MC源符號飛,而是,這是我在MC裏補間的MC,向右移動作爲一個單一的對象。 我該如何糾正? – Guyz