私が取り組んでいる Web サイト (オールドスクールなので AS2 を使用) には、.swf を使用してサブ SWF をロードする、より大きなインデックス .swf ファイルがありますloadMovie("foo1.swf", placeToShowSwf)
。4 までありますfoo1.swf
が、これはばかげています。それらの間で異なるのは、xml ファイルのアドレスに含まれる単一の数字であり、どのコンテンツを読み込むかを示しているからです。したがって、ここに示すように、インデックス ファイルが xml ファイルをロードするために呼び出す単純な関数を使用して、これを 1 つのファイルに減らしたいと考えています。
function setFooNum(i:Number) {
fooNum = i;
//my_xml = new XML(); edit: this line has since been removed and is kept for historical purposes
my_xml.load("foo"+fooNum+".xml");
};
ただし、何らかの理由で、xml ファイルが読み込まれません。関数の外で適切にロードされますが、それはあまり役に立ちません。fooNum は適切に変更されますが、間違った xml ファイルが既に読み込まれている場合は何の役にも立ちません。私が知る限り、コードmy_xml.load("foo"+fooNum+".xml")
はまったく存在しないかのように動作します。
これは私が知らないある種のセキュリティ対策ですか?それを回避する方法はありますか?
編集
何人かが指摘したように、my_xml = new XML()
行が原因でした。残念ながら、新しいエキサイティングなエラーが発生しています。インデックス ファイルの のsetFooNum(i)
直後に が呼び出されると、内部ではfooNum が正しく設定されていることが出力されますが、関数の内部(明らかに何もロードしていないにもかかわらず成功を返します) は、fooNum が未定義であることを示しています! また、(デバッグ目的で)呼び出すインデックスswfにボタンを作成しました。これにより、何らかの理由で正常に動作します。したがって、ファイルがロードされるまで数秒待つことで問題が解決するように見えますが、それは信じられないほど醜い解決策です。loadMove()
trace(fooNum)
setFooNum()
trace(fooNum)
onLoad()
setFooNum(3)
では、すべてが完全にロードされるまで待ってから呼び出すにはどうすればよいsetFooNum()
でしょうか?