何年も前に、さまざまなブラウザーで MP3 ファイルを再生するためだけに、小さくてシンプルな SWF を作成しました。インターフェイスを公開し、JavaScript から呼び出しました。それはすべて小さくて簡単でした。Guise.as
ソースコード全体を見ることができます。
を使用してメイン クラスをコンパイルしましたmtasc
。これにより、初期化コードのメイン関数を指定できます。
/**Main entry point.*/
static function main(mc)
{
これは、WAV サポートを追加するまでは問題なく機能していました。Flash はネイティブで WAV をサポートしていないので、ライブラリを追加してみました。しかし、ライブラリには Flash 10 が必要で、 ではコンパイルできないためmtasc
、Flex 4.6 をダウンロードして使用してみましたmxmlc
。男の子、私の痛みは始まったばかりでした。
コンパイル済みの SWF が機能しなくなりました。MP3 ファイルでも機能しません。どこから問題を見つけたらよいかわかりませんが、答えのない質問がたくさんあることはわかっています。おそらく、そのうちの 1 つが私の問題です。
- 私の理解が正しければ
mxmlc
、「メイン エントリ ポイント」の概念はありませんが、Flash は単純に「メイン クラス」のインスタンスを作成します。しかし、メイン クラスを指定するにはどうすればよいでしょうか。コマンド ラインで を使用してクラスを参照mxmlc
すると、そのクラスは自動的にメイン クラスになりますか? それとも、クラスがルート (つまり、ない) パッケージにあることが絶対に必要ですか? 特別な名前が必要ですか? - メイン クラスを正常に指定した後、エントリ ポイント コードをメイン クラスのコンストラクタに移動するだけでよいですか?
- 元のクラスでは、 を使用してオブジェクトを配列に変換するグローバル関数を追加しました
Array.from=function(object:Object)
。Array
これにより、厳密モードにいるときにエラーが発生しました---明らかに、クラスオブジェクトに静的メソッドを追加するのが好きではないためです。これは厳密でないモードでも機能しますか? どうしたの?クラスの通常のメソッドに変換すると、機能しますか? - 「実際の」JavaScript で行うことに慣れている
Function.prototype.bind=function()
ので、関数を追加して、コールバックがあるときにthis
正しく設定されるようにしました。これはまだ機能しますか?のプロトタイプにメソッドを追加できますFunction
か? - もうコンテキストをバインドする必要さえありますか?
positionTimeoutID=setTimeout(fireSoundPosition.bind(this), 1000)
のようなものを なしで呼び出した場合bind(this)
、Flashthis
はコールバック メソッドに正しいものを渡しますか? - Flex コンパイラは、いくつかの API メソッドが変更されたと不平を言ったので、呼び出しを変更すると何かが変更された可能性があり、新しい API を理解できません。この SWF をデバッグする方法はありますか? ブラウザ コンソールに書き込みますか? ビープ音?なんでも?Adobe などから大きな IDE を購入することなく?
フィードバックをいただければ幸いです。ほんの 1 つか 2 つの小さな調整ですべてが台無しになっていることは確かですが、おそらくコミュニティの助けがあれば、SWF を再コンパイルするためだけに本全体を読んだり、新しい SDK を購入したりするのに数日を費やす必要はありません。いくつかの新しい呼び出し...ありがとう。