Fireworks CS3 バグ2件(deleteキーが効かない・特定フォントで文字欠け) SafariのCSS Hack
7月 03

くぅー!まんまとハマってしまった…。

FlashPlayerのバージョンは8以降を対象にしようと思って、AS2.0でSWFを作成していた。その際、パブリッシュの設定でFlashPlayerのバージョンを8にするのを忘れて、9のままで作成していた。

作ってプレビューした時には問題なかった。その後、Playerのバージョンを確認したら9になっていたので8に設定してパブリッシュしたら、今まで削除されていたMCが削除されない!Playerのバージョンを変更した際には他にもいくつか変更していたので、原因の究明にとまどった。後でPlayerを9にするとちゃんと削除されるなーと思いながら、8でも削除されるように修正しなくちゃならないので、いろいろ調べたところ…

[FLASH CS3のヘルプ]より

メモ : バージョン2 のコンポーネントを使用している場合は、このメソッドを使用しないでください。ステージまたはライブラリにバージョン 2 のコンポーネントがあると、getNextHighestDepth() メソッドの戻り値が 1048676 になることがあります。この深度は、有効な値の範囲外です。バージョン 2 のコンポーネントを使用している場合は、バージョン 2 のコンポーネントの DepthManager クラスを必ず使用してください。

むむむ!attachMovie()するときにgetNextHighestDepth()使ってますよ。んで、削除しようとしているMCの深度を調べると見事に1048676。バージョン2のコンポーネント…、ああ、はじめ使ってました、今は使ってないけど…。何だよー、Buttonコンポーネントがライブラリにあるだけで、こんなことになるのかよー。

Buttonコンポーネントをライブラリから削除するとまったく問題なく削除された。こんな罠作るなよー…。

他の対処方法としては、getNextHighestDepth()を使っていて、且つバージョン2のコンポーネントがライブラリにある場合は削除対象のMCをswapDepths()を使って、-16383~1048675内の深度に再設定してremoveMovieClip()するか、removeMovieClip()を使わずにunloadMovie()を使う。

FlashPlayer9だと深度が1048676でも削除されていたのは、9の場合は有効な深度が広がっているってことかなー?

Popularity: 12% [?]

written by joy-pop

add to hatena hatena.comment (1) add to del.icio.us (1) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 2

Leave a Reply