2011-11-12 34 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()方法是过去使用的“旧”方法,并且仍保持兼容性。 –

相关问题