私はactionscriptの新機能を使用しています。ActionScript 2.0のみをサポートするネットワークアプライアンスのコードを記述しています。actionscript 2.0でのメソッド呼び出しのタイミング問題XML onLoad()function
私はXMLフィードを読み込み、フィード(要約と詳細)から2つのテキストデータを抽出し、2つの別々のTextFieldとして表示し、それらのそれぞれの長さを知ってからTextFieldをサイズ変更して再配置しようとしています。
XMLのonLoad()メソッドを使用してフィードから値を抽出し、TextFieldに値を設定しました。 onLoad()メソッドの終わりに、私はクラスのプライベートresizeSummary()メソッドを呼び出すことができたと思っていましたが、onLoad()メソッドではわからないという理由で、 resizeSummary()メソッドが呼び出されました。
私はコードの後半でresizeSummary()を呼び出しますが、他の処理が完了するまでonLoad()が呼び出されないため、問題はありません。だから私は制御する方法がわからないというタイミングの問題があるようだ。
xmlのonLoad()関数のイベントで呼び出されたresizeSummary()メソッドを取得する方法がわかりました。
2番目に簡単な解決方法は、onLoad()が完了したときに通知を受けて、TextFieldのサイズを変更できるようにすることです。
私のクラスのコードスニペットがこの投稿の末尾に表示されます。
class Foo {
// constructor
function Foo() {
initSummaryTextField();
getData();
}
private function getData() {
var xmlData = new XML();
xmlData.onLoad = function(success:Boolean): Void {
if (success) {
var summary:String = '';
// successfully extracted summary text at this point and assigned value
// to TextField .text variable. So I am good to here.
// THIS CALL NEVER SEEMS TO BE MADE EVEN THOUGH TRACE STATEMENT
// IMMEDIATELY PRECEEDING IT DOES.
trace("About to call resizeSummary()");
this.resizeSummary();
}
}
xmlData.load("URL TO SERVICE");
}
private function initSummaryTextField() {
// do stuff here to create new TextField() for summary
}
private function resizeSummary() {
trace("calling resizeSummary");
}
}
'これを'。 onLoad()関数定義内のresizeSummary()呼び出しから、スクリプトはコンパイルされません。私はmtasc ubuntuコンパイラを使用しています。エラーメッセージは、タイプ不明の変数resizeSummaryです。 – jspyeatt