Number型のメンバ変数の初期化に関するバグっぽい挙動について詳細に検証してくれた「独学ActionScript」さんが、FlashDevelopにtrace()
の出力を出せないと苦戦しているらしい。
この記事でFlash CS3とFlex 3 SDKでの出力結果の違いを検証してみたくなったので、FlashDevelopからFlex 3 SDKコンパイラ経由でtraceを表示させようと思ったら、意外と難しくてハマりました。
FlashDevelopの使い方 (4)Flex 3 SDKでtraceを表示する – 独学ActionScript
CS3を持ってない俺としては「こういった部分が難しい」と言った気付きが無いので、なるほどなと思ったものだが、このように検証を行ってくれる人に不要な苦労をさせるわけにもいかない。
と言うことで、普段Outputパネル上のtrace()
を活用している俺が、その方法を書いておく。
手順
まず必要なもの。
- .NET Framework 2.0以上(FlashDevelopを動かすのに必要)
- 最新のJava(Flex 3 SDKを動かすのに必要)
- Flex 3 SDK
- FlashDevelop本体(3.0.0 beta9)
※3.0.0 beta8はバギーなので使わない方が良いです。
デバッグ版のFlashPlayerとかは不要。Flex SDKについてる奴を利用します。
次に、超駆け足な準備手順。
- .NET Frameworkをインストールする。
- Javaをインストールしてパスを通す。
- Flex 3 SDKを解凍して適当に配置。
- FlashDevelopをインストールする。
- FlashDevelopを開いて
F10キー
を押し、設定ダイアログを開く。で、AS3Contextを表示させ、Flex SDK Locationを設定する。 - 新しいプロジェクトを作り、メインクラス(Always Compileのクラス)に
trace()
を入れておく - 「Project」-「Properties」か、右上の方にあるプロジェクトの設定ボタンを押し、プロジェクトの設定ダイアログを開く。
- OutputタブのTest Movieの値をPlay in external playerにしてOKを押す。
- モードを
Debug
にしてF5キー
を押し(または、再生ボタンをクリック)、ビルド&実行。
これで、Outputパネルにtrace()
が出てくると思う。
こんな感じ。
- ・・・
- (fcsh)
- Build succeeded
- Done (0)
- [Capturing traces with FDB]
- 0
- 0.03333333333333333
- 0.03333333333333333
重要なのは、swfの再生を、タブ内ではなく外部Playerで実施すると言う事。もし外部プレイヤーのパスを聞かれたら、「[Flex SDKのパス]\runtimes\player\win\FlashPlayer.exe」
を、設定ダイアログの「FlashViewer」の所にある「External Player Path」に設定すればいいと思う。ただ、俺のFlashDevelopではそんな所に値は入ってなかったので、SDKの位置から勝手に拾ってくる機能があるのかもしれない。もしくは、昔設定した時にレジストリに入ったのかもしれない。
つか、ここまで書いたところで確認のために色々調べてたら「タロタローグ ブログ | FlashDevelop+AS3Unitで、単体テストを書く方法」に似た内容の記事があった。絵入りで。
肝心のバグの話
しかし、Number型のこの挙動がCS3のコンパイラでは出ないと言うのは驚き。CS4からはコンパイラが統合されると聞いたが、大丈夫だろうか?あと、バグ報告でもしておこうかと思ったが、何かアカウント作らなきゃ駄目とかで止めた。プロセスが複雑すぎる!