SimpleButtonが不安定だったのを解決できた

ウィンドウなどについているSimpleButton(を拡張したボタン)が、ウィンドウが動くと効かなくなる不具合にずっと悩まされていた。

(不本意な回避法として、移動がかかるたびにボタンのremoveと再生成をしていた。)

原因は、downState、overState、upStateなどのマウス操作に合わせて切り替えるイメージとマウスの効くエリアを指示するhitTestStateを使いまわしていたことだった。

upState = upShape;
hitTestState = upShape;

みたいな具合。

こうしてしまうとボタン(やその親)が移動したとき、hitTestStateだけが移動できないで、結果ボタンが効かなくなってしまう。現在のガジェットOSで確認されたい orz

以上の解決にたどり着くまで、SimpleBututton.asはいったいどうなっているんだ?、とソースを探したけど見つからなかった。

しかし、Adobeのマニュアルでは、hitTestStateに新しいDisplayObjectを生成して当てていたので、解決できた。またサンプルではボタンに新しいクラスをあてがっている。クラス化していないボタンでも挙動に問題はないけど、以前Dockでクラスを解除した書き方をしたら挙動がおかしくなったので、クラスにしておいたほうがいいのかもしれない。

downState、overState、upStateについては、イメージ用のオブジェクトを使いまわしても、今のところ問題は出ていない。また、件の移動が起きない場合は、hitTestStateにもオブジェクトを使いまわして構わない。