2008-09-04 54 views
3

如何使用actionscript 3在Flash中引用舞臺上的位圖?你如何參考actionscript舞臺上的位圖?

我在Flash中的舞臺上有一個位圖,在電影結束時,我想在電影循環之前將它交換爲序列中的下一個。在我的圖書館我有3個圖像,出口的動作,與類名img1/img2/img3。這裏是我的flash中的圖層是如何設置的。

layer 5 : mask2:MovieClip 
layer 4 : img2:Bitmap 
layer 3 : mask1:MovieClip 
layer 2 : img1:Bitmap 
layer 1 : background:Bitmap 

在電影的結尾,我想換IMG1與IMG2,所以電影無縫循環,則最好換IMG2(第4層)與IMG3等,直到我去年底我圖片。

但我找不到如何引用已經放在舞臺上的圖像(在設計時),任何人都有任何想法如何做到這一點?

結束電影將有望從Web服務器(我有這個位的代碼)動態加載圖像,並顯示它們以及img1/img2/img3。

任何幫助,將不勝感激。

編輯:

@81bronco,我試過,但實例名稱是灰色的圖形,只會讓我與影片剪輯和按鈕做到這一點。我把它們變成了活動夾,並在添加一個新的之前清除了圖像(使用更簡單的vanhornRF建議的內容),但是由於某些奇怪的原因,當我將圖像清除出來回來看蒙版動畫。

回答

3

要引用在舞臺上的東西,你需要給舞臺實例一個名字 - 不要給圖書館中的符號一個類名稱。

單擊舞臺上的項目並查看屬性面板。在項目尺寸的輸入框上方應該有一個文本輸入框。在那裏輸入一個名字。

在您的代碼的其他地方,您可以通過它的實例名稱在舞臺上引用該項目。

1

應該是這樣的:

imageHolder.removeChild(imageIndex) 

imageHolder.removeChildByName(imageName) 

,之後

imageHolder.addChild(newImage) 
0

我可能會做這樣的事情在你的文檔類

for(var i:int=0; i<numChildren; i++){ 
    trace(getChildAt(i),"This is the child at position "+i); 
} 

我這樣做是因爲我還代碼在閃存IDE和調試器是如此的很痛苦地獲得工作大部分是比較容易的時候只是跟蹤變量,因此您可以使用for循環打印舞臺上當前項目的對象名稱,也可以使用調試程序查找對象。你可以通過調用getChildAt(int),你可以removeChildAt(int),你可以addChildAt(displayObject,int)和swapChildrenAt()來引用它們。 (int,int)。這些參數中的int將表示由trace語句返回的索引位置,而displayObject顯然僅表示您想要添加到舞臺或父級DisplayObject的任何內容。

使用這4個命令,您應該可以自由地重新安排舞臺上的任何動畫片段,以便它們看起來像無縫過渡。

@ 81bronco每個人都應該,如果你想唯一引用它們專門爲避免混淆,如果有結束是很多項目的舞臺上登場絕對命名資產

0

嘿Re0sless,當您從這些項目舞臺上是否附有任何事件監聽器,任何計時器或裝載器?這些東西中的任何一個都可能使對象在閃存中停留並且不能正確移除。除了刪除項目之外,也許嘗試將它歸零?有時候,這有助於清除其引用,以便它可以被正確銷燬。

當然,它也可能是一件愚蠢的事情,如在一個實例中刪除項目不會從未來的框架中刪除項目,但我真的不認爲是這樣。