0

tweener は、tweening 中にパラメーターを渡している間、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);
    }
4

1 に答える 1

1

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]);
}
于 2011-04-12T01:40:58.790 に答える