トレースする必要があるコードのシンプルな作品:ActionScript 3は単純な同期アーキテクチャ言語ではありませんか?
- が行わ
- テスト離煙!
と私は完全に遠く離れているから何かを得る、
シナリオA:
var __functions_to_execute:Array;
function start():void {
__functions_to_execute =[];
__functions_to_execute.push(futile_trace());
__functions_to_execute.push(futile_trace('test'));
execute_functions();
}
function execute_functions():void {
if(__functions_to_execute.length){
//where shift on this Array remove the first element and returns it
var exec:Function =__functions_to_execute.shift();
exec;
//I tried this too, just in case
//__functions_to_execute[0];
//__functions_to_execute.shift();
} else trace("done!");
}
function futile_trace(_value:String ='rien'):void {
trace(_value);
execute_functions();
}
start();
かなりシンプル。しかし、結果は次のとおりです。
- RIEN行わ
- !
- テスト
これに推奨されない機能を追加することができますし、にfutile_trace機能を変更することができます:
function futile_trace(_value:String ='rien'):void {
trace(_value);
setTimeout(execute_functions, 0);
}
と、結果は次のとおりです。
- RIEN
- テスト
- 完了!
[OK]を、その後、私は自分自身に言った、なぜ、私はexecute_functionsを呼び出すときにスコープを変更することができないので、私が試した:
function futile_trace(_value:String ='rien'):void {
trace(_value);
extra_step();
}
function extra_step():void {
execute_functions();
}
は結果だったかと思います!ええ:
- RIEN
- はやりました!
- 試験
so ?!トレース機能が悪いですか?それは遅い?関数に引数を渡すと、他の関数と比べて時間がかかりますか?私は...うわーだよ!
私はこのような奇妙さを避けるために何かできますか?
(記録のために、私のプロジェクトは、トレース{RIEN、行われ、テスト}していない...私は、「トレースステートメントを省略」かどうかでそれらをコンパイルした場合、完全に異なる反応コードの15kのラインを持っている。
ご入力のみんなのために感謝。
おかげで男を、それが今ではあまり意味が、彼のリテラル形式を使用して関数を保存しようとする関数を呼び出しますし、実際の関数ではなく配列に結果(void)を格納してください! 私はこれらのテストを続けます(func、args) – Francis
@Francisはデバッガを使っても役に立ちます。 –
私が提案していたコードは非常にシンプルなので、トレースやその他の奇妙な非同期イベントが発生すると思われていました。しかし、あなたが正しいです、私はデバッグを使用する必要があります。 デバッグについて言えば、別の質問をここで尋ねます:私の最終的なプロジェクトは、Flash Player 10.0を搭載したLinux上でFirefox 3.0で動作するスタンドアロンアプリケーションです。ファイルとして実行しているフラッシュコンテナを不正にするためにどのツールを使用する必要がありますか(Apacheを実行していない、ローカルパスから直接firefoxにフラッシュする)任意の提案を歓迎します。ありがとう – Francis