こっそりハマったFlashの罠~パブリッシュ設定:非表示レイヤーの書き出し編~
今日の記事はサクッとメモ書き程度で失礼します。
記事にするとサクッとですが、ハマったのはけっこうズボッとでした。謎のコンパイルエラーと、FlashCS3以降のパブリッシュ設定に追加された「非表示レイヤーの書き出し」の関係について。
ある日、謎のコンパイルエラーに見舞われるようになった。
Flashの開発を進めていたときのこと、ActionScriptにはなんの変更を加えていないのにコンパイルエラーが出るようになった。詳しくは、下のようなエラー。
1119: 未定義である可能性が高いプロパティ hogeButtonに静的型 display.buttons.HogeButton の参照を使用してアクセスしています。
1120: 未定義のプロパティ hogehoge へのアクセスです。
スクリプトを記述している.asファイル側には変更を加えていないので、問題はflaファイル側だろうと思い調べていくと、レイヤーの表示/非表示を切り替えている部分が影響していることがわかった。
思い当たるのはパブリッシュ設定の「非表示レイヤーを書き出す」という項目。初期設定ではチェックが入っているので、見た目上赤いバツがついて非表示になっているレイヤーでも、コンパイル時には「そこに在るモノ」として扱われるんだけど、この項目にチェックが入っていないと、そもそもそこに存在しないモノとして扱われてしまうという。
で、何をしてからコンパイルエラーが出るようになったかを調べていくと、Fireworksから素材のインポートをしたことがキッカケなことがわかった。気をつけなければならないのは、以下のダイアログが表示されたときのようです。
上の画像内の注釈にあるように、チェックボックスを外してデータを読み込んだときは、Flash側のパブリッシュ設定「非表示レイヤーの書き出し」のチェックが自動的に外れてしまうので、要注意です。ハマるのもこっそり、原因もこっそりですね、ははは(笑) …いや、笑い事じゃなかったんだから、ほんとに!