4

私が取り組んでいる 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()でしょうか?

4

4 に答える 4

1

おそらく、で適切な権限を持っていることを再確認する必要がありますcrossdomain.xml。クロスドメイン ファイルがジャックされた場合、リクエストはすべて通過しません。

http://crossdomainxml.org/

于 2009-11-23T19:29:19.577 に答える
0

kirupaWebサイトのこのチュートリアルが役に立ちます。

http://www.kirupa.com/web/xml/index.htm

ASとXMLの操作方法について説明します。これが答えを得るのに役立つことを願っています。

于 2009-09-20T14:16:11.617 に答える
0

関数は毎回新しい XML インスタンスを作成しているため、毎回 onLoad 関数も定義する必要があります。同じ XML インスタンスを再利用する場合は、関数を再定義する必要はありません。

var iFooNum:番号;
var oXML:XML = 新しい XML();

oXML.onLoad = 関数 (成功:ブール値) {
  if(成功) {
    //XML で何かを行う。
  }
}

loadFooNum = 関数(i:番号) {
  iFooNum = i;
  oXML.load("foo" + i + ".xml");
}

別のドメインから XML ファイルをロードする場合は、Flash が XML ファイルをロードできるように、他のドメインに crossdomain.xml ファイルが必要です。

于 2008-10-28T18:24:46.710 に答える
0

関数の外側で XML インスタンスの onLoad イベント ハンドラを定義したと仮定すると、関数本体内からインスタンスの宣言を削除できます。

function setFooNum(i:Number) {
    fooNum = i;
    my_xml.load("foo"+fooNum+".xml");
};
于 2008-10-28T18:56:01.873 に答える