再現方法
- タイムラインのレイヤー1にマスクしたいオブジェクトを配置する(maskedObjとする)
- タイムラインのレイヤー2にマスクするオブジェクトを配置する(maskObj1とする)
- レイヤー2をレイヤー1のマスクに設定する
- レイヤー2の適当なフレームに空のキーフレームをうち、別のマスクするオブジェクトを配置する(maskObj2とする)
- レイヤー1をレイヤー2のフレーム数まで伸ばす
この状態で、maskedObjに対して、maskObj1にマスクされている時に操作した情報は、マスクがmaskObj2に変わった瞬間に消えるみたいです。普通はremoveしないと消えないようなaddChildしたオブジェクトや、addEventListenerしたイベントがまるっと消えてしまいます。
マスクしているオブジェクトが変わっただけなのに、マスクされているオブジェクトが初期化されてしまうのです。明らかに変です。
FlashCS4でもFlashCS5でもなります。理由は謎です。ちなみにActionScriptから操作した場合は問題ないようです。Flashのタイムラインからマスクをかけた場合は、複数オブジェクトに対してマスクがかけられたりもするので、動作そのものが違うためでしょうか。
「マスクはASで操作する」あるいは「後で付加するあるいは後で付け直す」とすればこのバグを防げるみたいです。
有名なバグだったりするんでしょうか?こんなので何時間も取られてはたまらないですよね。・・・それは金曜日の私ですw