2009-11-04 126 views
1

我想動態補間我的SWF中的一些動畫片段,但它們的動態創建名稱存在問題。下面是代碼再次鑄造問題

function slidePhoto(e:TimerEvent):void { 
    i = "i3"; 
    movieClip = i as Object; 
    Tweener.addTween(movieClip,{x:0, y:0, transition:"easeInOutQuint", time:1, onComplete:waitMe, onCompleteParams:[4000, slideOutPhoto]}); 
} 

即使我宣佈

var i:String = "i"; 
var movieClip:Object; 

然後

movieClip = i+3; 

,這並不工作,但如果我跟蹤的動畫片段,我得到 「I3」 ???這是鑄造問題還是我在某個地方非常非常錯誤?

+0

你究竟在做什麼?你是否意識到將我轉換成對象並不會將它變成MovieClip? – 2009-11-04 21:48:14

+0

我需要以某種方式生成序列(i1,i2,i3,i4 .....),然後將此序列傳遞給Tweener,但它的目標屬性是Object type ...因此,我只能傳遞mc名稱或另一個Object ... – Zlatiborac 2009-11-04 22:23:08

回答

2

試試這個:

function slidePhoto(e:TimerEvent):void { 
    i = "i3"; 
    movieClip = getChildByName(i); 
    Tweener.addTween(movieClip,{x:0, y:0, transition:"easeInOutQuint", time:1, onComplete:waitMe, onCompleteParams:[4000, slideOutPhoto]}); 
} 

找到getChildByName在此參考頁:

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html

這是不是一個鑄鋼問題,你只需要根據包含名稱來定位的DisplayObject在我。

+0

當我嘗試這個,然後跟蹤movieClip我收到空作爲結果 – Zlatiborac 2009-11-04 22:21:29

+0

是正如Jotham和Lior說,此刻你試圖將一個字符串轉換爲一個對象,並以某種方式使用它來引用一個永遠不會去的MovieClip上班。 Jotham的解決方案將起作用。我懷疑你沒有命名你的MovieClip。當您動態創建MovieClip時,您需要設置name屬性。所以myMC:MovieClip = new MovieClip(); myMC.name = i3。它也必須添加到顯示列表中。 – Allan 2009-11-04 23:12:22

+0

好吧,剛剛導入Tweener後,我將這些對象定義爲影片剪輯 import caurina.transitions.Tweener; stop(); var i1:slika1 = new slika1(); i1.name =「i1」; var i2:slika2 = new slika2(); i2.name =「i2」; 正如你所看到的我已經給他們的名字,但再次這不起作用。 當我跟蹤movieClip和typeof我得到i3和字符串...字符串是對象類型和Tweener手冊狀態,我需要對象作爲目標...但這不起作用... – Zlatiborac 2009-11-04 23:48:27