我是否需要一个闭包来使这个TweenLite示例按需运行?

时间:2011-11-12 03:42:13

标签: actionscript-3 scope tweenlite greensock

我似乎记得有关pass-by-reference和Greensock 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 个答案:

答案 0 :(得分:0)

我认为您的TweenLite语法错误。尝试:

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