2011-11-12 60 views
0

我似乎記得關於傳遞引用和Greensock TweenLite類的一些東西。這是我能想到的唯一的事情是造成代碼中不工作這一點,因爲我打算:我是否需要一個閉包來使TweenLite示例按需要工作?

for (var i = 0; i < 10; ++i) { 
    addItem(); 
} 



public function addItem():MovieClip { 
    var item:MovieClip = getNewItem(); 

    item.y = item.height/2; 
    var newPosY = _origHeight - _items.length * item.height; 

    _items.push(item); 
    new TweenLite(item, ITEM_DROP_TIME, { y: newPosY }); trace(newPosY); 

    addChild(item); 
} 

跟蹤正在輸出我期待值:遞增的順序,每個數字都是比上一次更大(按物品的高度)。但是,我在視覺上看到的是,所有項目都在同一位置(如果newPosY對於所有補間實例都是相同的)。

想到的唯一情況是,newPosY被傳遞引用,所以補間的每個實例實際上都引用相同的值。我錯過了什麼嗎?還是我需要某種封閉來隔離我的補間屬性的價值範圍?

編輯

暗示這個問題來,因爲我想答案是「否」關閉,問題是在我的代碼的其他地方。我懷疑這個問題的任何進一步闡述都與其他問題有關。感謝那些迴應!

+1

對不起,我無法複製該問題。你能爲你的問題增加更多的上下文嗎?這段代碼中沒有任何內容阻止代碼按預期工作。 – joncys

+0

@joncys謝謝你,你是對的。確認我的TweenLite調用是正確的,迫使我查看我的代碼的其他部分,並且發現我在稍後階段與另一個補間進行了過渡。感謝您的答覆! –

回答

0

我認爲你的TweenLite語法是錯誤的。請嘗試:

TweenLite.to (item, ITEM_DROP_TIME, { y: newPosY }); 
+0

'TweenLite.to'只是返回一個'新的TweenLite(target,duration,vars)'實例。這不是問題。真正的問題必須超出代碼範圍。 – joncys

+0

謝謝@詹姆斯。兩種語法都很好地工作。 .to()方法是過去使用的「舊」方法,並且仍保持兼容性。 –

相關問題