くぅー!まんまとハマってしまった…。
FlashPlayerのバージョンは8以降を対象にしようと思って、AS2.0でSWFを作成していた。その際、パブリッシュの設定でFlashPlayerのバージョンを8にするのを忘れて、9のままで作成していた。
作ってプレビューした時には問題なかった。その後、Playerのバージョンを確認したら9になっていたので8に設定してパブリッシュしたら、今まで削除されていたMCが削除されない!Playerのバージョンを変更した際には他にもいくつか変更していたので、原因の究明にとまどった。後でPlayerを9にするとちゃんと削除されるなーと思いながら、8でも削除されるように修正しなくちゃならないので、いろいろ調べたところ…
[FLASH CS3のヘルプ]より
むむむ!attachMovie()するときにgetNextHighestDepth()使ってますよ。んで、削除しようとしているMCの深度を調べると見事に1048676。バージョン2のコンポーネント…、ああ、はじめ使ってました、今は使ってないけど…。何だよー、Buttonコンポーネントがライブラリにあるだけで、こんなことになるのかよー。
Buttonコンポーネントをライブラリから削除するとまったく問題なく削除された。こんな罠作るなよー…。
他の対処方法としては、getNextHighestDepth()を使っていて、且つバージョン2のコンポーネントがライブラリにある場合は削除対象のMCをswapDepths()を使って、-16383~1048675内の深度に再設定してremoveMovieClip()するか、removeMovieClip()を使わずにunloadMovie()を使う。
FlashPlayer9だと深度が1048676でも削除されていたのは、9の場合は有効な深度が広がっているってことかなー?
Popularity: 12% [?]




