マスクしているオブジェクトを変えるとマスクされているオブジェクトがおかしくなる不思議


再現方法

  1. タイムラインのレイヤー1にマスクしたいオブジェクトを配置する(maskedObjとする)
  2. タイムラインのレイヤー2にマスクするオブジェクトを配置する(maskObj1とする)
  3. レイヤー2をレイヤー1のマスクに設定する
  4. レイヤー2の適当なフレームに空のキーフレームをうち、別のマスクするオブジェクトを配置する(maskObj2とする)
  5. レイヤー1をレイヤー2のフレーム数まで伸ばす

この状態で、maskedObjに対して、maskObj1にマスクされている時に操作した情報は、マスクがmaskObj2に変わった瞬間に消えるみたいです。普通はremoveしないと消えないようなaddChildしたオブジェクトや、addEventListenerしたイベントがまるっと消えてしまいます。

マスクしているオブジェクトが変わっただけなのに、マスクされているオブジェクトが初期化されてしまうのです。明らかに変です。

FlashCS4でもFlashCS5でもなります。理由は謎です。ちなみにActionScriptから操作した場合は問題ないようです。Flashのタイムラインからマスクをかけた場合は、複数オブジェクトに対してマスクがかけられたりもするので、動作そのものが違うためでしょうか。

「マスクはASで操作する」あるいは「後で付加するあるいは後で付け直す」とすればこのバグを防げるみたいです。

テスト用fla+asファイル

有名なバグだったりするんでしょうか?こんなので何時間も取られてはたまらないですよね。・・・それは金曜日の私ですw