[AS]FlashBuilder4.7の(バグだらけの)ASC2.0の無効化する(以前のコンパイラに戻す)方法
FlashBuilder 4.7はASC2.0というコンパイラでswfをコンパイルします。
(このコンパイラ変わってることを意識してない人が意外と多いみたい)
ASC2.0で書きだしたswfの方が軽くて速くなる、というウリなのですが、いかんせんまだ完成度が低いのか使い方によって謎なバグに遭遇することが多いです。
ボクの経験だとFlashProで作ったswcのDisplayObject系のアセットを使おうとするとなぜだか完全透明になってしまった画面に表示されない、という現象に遭遇しました。
(swc使うとバグる法則性ははっきりつかめていない)
で、FlashBuilder4.7はデフォルトがASC2.0コンパイルなのでこれらのバグから逃れるためにはFlashBuilder4.6にバージョン落とすしかないのかな、と思ったのですが、どうやら設定でコンパイラを変えれるということを教えてもらいました。
プロジェクト単位で設定可能です。
が、ここに大きな罠があります。
それはプロパティパネル上では変更できないということ。
では、どうするかといえば、プロジェクトフォルダのルートに存在する設定ファイル(例:hoge.actionscriptproperties)をテストエディタで開いて、該当箇所を直接書き換えて保存しなおす、ということをすればOKです。
該当箇所は3行目のuseFlashSDK=”true”をuseFlashSDK=”false”に変えるだけ。
//プロジェクト設定ファイル (hoge.actionscriptproperties)の3行目 //長いので改行してます。 //該当箇所はここでは13行目 <compiler additionalCompilerArguments="-locale en_US" advancedTelemetry="false" autoRSLOrdering="true" copyDependentFiles="true" fteInMXComponents="false" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="true" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="bin-debug" removeUnusedRSL="true" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" useFlashSDK="false" verifyDigests="true" warn="true">
これでASC2.0に悩まされることもなくなります。
ちなみにコンパイルが本当にASC2.0じゃなくなったかの確認は、以下のような関数を実行してみて、コンパイルエラーになったら、ASC2.0コンパイル。エラーでずにtraceできたら従来のコンパイラとなっております。
public function duplicate2 (foo:String):void { const foo:String = "hugahuga"; trace(foo); //旧:hugahuga, 新:実行できない }
ASC2.0についてはここにまとめられてます。
とんぶろ:ActionScriptCompiler2.0について発表してきたよ
※上記確認コードもここのスライドから借りました。
おまけ
useFlashSDK=”false”を設定すると、FlashBuilder4.7のプロジェクト→プロパティ→ActionScriptコンパイラーの項目に「従来のコンパイラーを利用する」というチェックボックスが表示されるようになります。
これで、いちいちテキストエディタで編集しなくてもいいか、と思いきや、この機能はバグってるようでチェックボックスを解除してOKとしても次に開いたときはまたチェックされた状態になってしまいここで設定を変更することはできないようでした。
Tweet