DoTweenerのonUpdateの記述方法

Progression4におけるDoTweenerのonUpdateの記述方法が分からなかったので色々調べました。

最初試した方法

var command:SerialList = new SerialList();
command.addCommand(
    // mcはMovieClip
    new DoTweener(mc, { time: 10, onUpdate: function() {trace("UPDATE!")} } )
);
command.execute();

trace文は出力されず。なんかProgression3のときはこれで出来てた気がするんだけども。

次に試した方法

DoTweener - Progression 4.0 API Referenceを見てみると、onUpdateメッソドがあるじゃん、というわけで。

var command:SerialList = new SerialList();
command.addCommand(
    // mcはMovieClip
    new DoTweener(mc, { time: 10} ).onUpdate(function() {trace("UPDATE!");} )
);
command.execute();

エラーとなる。なんでだろう?とドキュメント良く見ると、

onUpdate property onUpdate:Function [read-write]

setterではありませんか!

気を取り直した方法

var command:SerialList = new SerialList();
command.addCommand(
    // mcはMovieClip
    new DoTweener(mc, { time: 10} ).onUpdate = function() {trace("UPDATE!");}
);
command.execute();

もちろんだめ。setterの返り値はvoidですよ!

結論

DoTweener - Progression 4.0 API ReferenceにあるDoTweenerのconstructorを見てみると。

DoTweener () constructor public function DoTweener(target:Object, parameters:Object, initObject:Object = null)

第三引数で、初期化プロパティを指定したObjectを渡せるんですね。ということは、これ使えば行けるんじゃね?というわけで試したのが以下。

var command:SerialList = new SerialList();

command.addCommand(
    // mcはMovieClip
    new DoTweener(mc, { time: 10 }, { onUpdate: function(): void { trace("UPDATE!");} });
);
command.execute();

無事に、trace文が出力されました。良かった良かった。