tmlib のイベント処理について

色々あって、少し Quintus に浮気してた時間もあったんですが、また tmlib に戻って来ました。
それで、前からイマイチよく分かっていなかった「オブジェクトのイベント処理」について、ちょっとだけ前進した部分を書いておこうと思います。

他のプログラミング言語で「コールバック」と言われるイベント処理方式については知っていたんですが、tmlib での「イベント処理」がどうなっているのかは良く分かっていませんでした。
それで、ようやく少しだけ理解できたのが「対象オブジェクトの on メソッドを使う」という事です。
今回は tm.display.StarShape で描いた星を左右に往復させるのに tm.anim.Tween を使ったのですが、往路が終わった後に復路の移動を開始する(tmlib での)方法を見付けるのに四苦八苦した次第です。

途中経過は長くなるので省略して、出来上がったコードは次のようになりました。
this.tw = new tm.anim.Tween().fromTo(this.star, {x: 100}, {x: 700}, 2000, null);
this.ctw = new tm.anim.Tween().fromTo(this.star, {x: 700}, {x: 100}, 2000, null);
self = this;
this.tw.on("finish", function (e) { self.ctw.start(); });
this.ctw.on("finish", function (e) { self.tw.start(); });
this.tw.start();

ポイントは「this.tw.on(…)」の部分です。
Tween でのアニメーションは、終わる時に対象(fromTo() の第一引数で渡したオブジェクト)の “finish” イベントをトリガするため、そのイベント名と実行したい関数を渡して on() を呼んでおくことで、イベント発生時に登録した関数が走るようになります。
(ちなみに、Javascript に不慣れなため 「self.ctw.start();」の部分で「this.ctw.start();」と書いてしまい、かなりの間 try & error を繰り返したのは内緒です)

というわけで、かなり遠回りした気がしますが、なんとか希望の処理を実装することができました。もっと良い書き方をご存知の方には、ぜひツッコミを入れていただければと思います。