补间时传递参数时,补间不会更新 myValue。为什么?
public var myValue:Number = 0.0;
Tweener.addTween(this, {myValue: 1.0, time: 2.0, onUpdate: traceValue, onUpdateParams: [myValue]});
private function traceValue(value:Number):void
{
trace(value);
}
补间时传递参数时,补间不会更新 myValue。为什么?
public var myValue:Number = 0.0;
Tweener.addTween(this, {myValue: 1.0, time: 2.0, onUpdate: traceValue, onUpdateParams: [myValue]});
private function traceValue(value:Number):void
{
trace(value);
}
在 ActionScript 中,原始值始终按值传递,而不是通过引用传递。Tweener 正在更新您的值,但传递给 traceValue 的始终是原始值。因此,在您上面的代码中,它总是会追踪到 0。解决方案是传入对目标对象的引用,并每次读取该值。如果您传入字段名称,则可以动态完成,以获得最大的灵活性。例如:
public var myValue:Number = 0.0;
Tweener.addTween(this, {myValue: 1.0, time: 2.0, onUpdate: traceValue, onUpdateParams: [this, 'myValue']});
private function traceValue(target:Object, field:String):void
{
trace(target[field]);
}