G-chan Square

じーちゃん/へたっぴの綴る、日々のつれづれとか。
twitterのまとめとゲームネタが中心。2015年からロードバイク/ミニベロ始めました。

[Flex] mxmlファイルとasファイルは同じファイル名にしてはいけない

こんばんは、じーちゃんです。

例によって、未来の自分に対する備忘録です。

さて、今日のお題は"Flex"でのハマりポイント。

Flexアプリを作る際には、mxmlファイルでレイアウトなんかを整えて、そのmxmlの中の<mx:Script>タグに内部処理のソースを書いたりできます。

が、しかし……<mx:Script>タグ内のスクリプト部分が大きくなってくると、レイアウト情報とソースコードが混在することになって見苦しいことになってきます。
デザインと内部処理の分離の面からしても、よろしいとは言い難い事態になるわけですな。


ま、そんなわけで、こういう状態になってくると誰しもが「そろそろソースファイルも大きくなってきたことだし、別ファイルとして外に切り出すか」ってことを考えるかと思います。じーちゃんもそう考えました。

そのときに、例えば、"hoge.mxml"というmxmlファイルの内部処理部分を"hoge.as"として、<mx:Script>タグ内の処理記述を全部"hoge.as"に移した後で、"hoge.mxml"の中は

<mx:Script source="hoge.as" />

とか書いておけばOKなはず。

 

な・ん・で・す・が……
エラーが出てコンパイル通らないよ、ママン!


え? なんで? どうして? Why?
ってことで、またしてもググるさんに尋ねてみてWebの海を漁ったり、いろいろあーでもないこーでもないと試行錯誤した上で、原因判明。

同じディレクトリに同じファイル名のmxmlファイルとasファイルを置いてはいけないということが発覚。

"hoge.mxml"と"hoge.as"のように"hoge"の部分が同じになってしまっているのが原因と判明。
なので"hoge.mxml"から呼ばれるActionScriptファイルは"hogeScript.as"とか別の名前にしてやれば解決します。

むぅ……拡張子違うんだし、呼ぶ際には <mx:Script source="hoge.as" /> って具合に拡張子まで明記して呼んでいるんだから、これくらい通してよ……っていう気がしないでもないですがダメなものはダメな様子。

しかも、コンパイルエラーの内容からこれが原因であるなんてことはまったく推測できないってのが困りもの。
まぁ、Adobeも、Flashの元々のMacromediaもコンパイラとか専業のところじゃないっぽいからアレだけど、もうちょっとわかりやすいコンパイラエラーを表示してくれよん。。。

mxml as mx:Script コンポーネントの実装に解決できませんでした。

コメントする