« LocoRocoとヨッシーアイランドが似ている件について | メイン | カルポの設計を補助したい »

人生いろいろバグもいろいろ

AS3.0の勉強をしている過程において発見したバグを紹介してみます。

Event.REMOVED をイベントリスナ登録しておくと、そのオブジェクトが removeChild などで削除された時にコールバックメソッドが呼ばれるのですが、そこで削除したオブジェクトの子オブジェクトを削除しようとするとFlashPlayerが落ちます、少なくともうちの環境では100%確実に。
これはバグというか仕様に近い気もするけれど。

また、この Event.REMOVED はあくまでスクリプトによる直接削除のみでしか発生せず、MovieClip.nextFrame() などでフレームを切り替えることによるシンボル削除については一切発生しません。
つまりこの場合のイベントリスナ解除はわざわざ自前で入れなきゃいけないとか結構ふざけてますね。
Flasherイジメとしか思えない。

Event.ACTIVATE や Event.DEACTIVATE をイベントリスナ登録しておくと、それぞれ FlashPlayer にフォーカスが戻った時や外れた時にイベントが通知されるのですが、デバッグプレイヤーのみなぜかプレイヤー本体とステージでそれぞれイベントが発生します。
フォーカスを戻す際にプレイヤーの枠をクリックすると Event.ACTIVATE が発生しますが、そこでさらにステージ内をクリックすると Event.DEACTIVATE と Event.ACTIVATE が連続で発生。
その状態でフォーカスを外すと今度は Event.DEACTIVATE → Event.ACTIVATE → Event.DEACTIVATE の順でイベントが多重発生します。
どう考えてもデバッグプレイヤーが余計なことしてるっぽいです。

トラックバック

このエントリーのトラックバックURL:
http://void.heteml.jp/mt/mt-tb.cgi/23

コメントを投稿

あわせて読みたい