1

誰かが私を助けてくれることを願っています...外部の XML ファイルを Flash にロードしています。完璧に機能しましたが、今週から機能しなくなりました。XML ファイル内のリンクが問題です。理由がわかりません。Flash で次のメッセージが表示 されます。Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found. 最初にボタンをクリックすると XML が読み込まれ、リンクは機能しますが、その後はテキストとリンクがまったく読み込まれません。

私が使用するコードを示します。

var txtFld:TextField = new TextField();
var txtFmt:TextFormat = new TextFormat();

var xml:XML;
var urlLoader:URLLoader = new URLLoader();
var urlRequest:URLRequest = new URLRequest("background.xml");
urlLoader.load(urlRequest);
urlLoader.addEventListener(Event.COMPLETE, onComplete, false,0,true);
function onComplete(evt:Event):void {
evt.target.removeEventListener(Event.COMPLETE, onComplete);
xml = new XML(evt.target.data);
}

txtFmt.font = avenirRoman.fontName; 
txtFmt.size = 12; 
txtFmt.leading = 4;
txtFmt.color = 0x616161; 
txtFld.defaultTextFormat = txtFmt; 
txtFld.embedFonts = true;
txtFld.antiAliasType = AntiAliasType.ADVANCED;
txtFld.thickness = -100;
txtFld.sharpness = 50;
txtFld.multiline = true;
txtFld.wordWrap = true; 
txtFld.width = 500; 
txtFld.autoSize = TextFieldAutoSize.LEFT; 
txtFld.x = 270; 
txtFld.y = 145;


btn10.addEventListener("click", afterClick2);
function afterClick2(e:Event):void {
txtFld.htmlText = xml.INFO[0].toString();
addChild(txtFld);

}

btn11.addEventListener("click", afterClick3);
function afterClick3(e:Event):void {
txtFld.htmlText = xml.INFO[1].toString();
addChild(txtFld);

}

btn12.addEventListener("click", afterClick4);
function afterClick4(e:Event):void {
txtFld.htmlText = xml.INFO[2].toString();
addChild(txtFld);

}

次に、追加の (IOErrorEvent) コードを挿入しようとしました。

urlLoader.addEventListener(IOErrorEvent.IO_ERROR, catchIOError);
function catchIOError(event:IOErrorEvent){
trace("Error caught: "+event.type);
}
urlLoader.load(new URLRequest("Invalid XML URL"));
trace("Continuing with script...");***

次に、次のメッセージが表示されます: TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。main3_fla::MainTimeline/afterClick2() で

そして、XML ファイルはまったくロードされません。XML 内のすべてのリンクを取り出すと、テキストは完全にロードされます。

誰が何が悪いのか教えてもらえますか? ありがとう

4

1 に答える 1

0

この「問題」全体は本当に奇妙です。AS3 コードを書いているのですか? 私は一生、次のことを理解できません。

  1. あなたの問題は何ですか?xml ファイルとすべてのリンクを一度に読み込めますか? 問題は、xml ファイルを再読み込みしようとした 2 回目ですか? xml ファイル内にリンクがない場合は常に機能しますか?
  2. あなたはあなたのxmlファイルをロードするボタンについて言及していますが、あなたのコードにはその機能を提供するボタンがありません
  3. どこからxmlファイルをロードしようとしていますか?それはあなたのコンピュータからのローカルファイルですか?
  4. new URLRequest("background.xml") を実行しますが、絶対 URL を指定しません。つまり、これはある種のパス変更である可能性があるため、"background.xml" は 2 回目に別のものにリンクします (方法はわかりませんが、何でも可能です)。 )
  5. あなたのコードは奇妙に思えますが、コード全体がコンストラクターの一部なのか、それとも何か他のものなのかわかりません。「addChild」を複数回実行すると、txtFld がある種のクラス メンバーであり、クラスのインスタンスが複数ある場合、これが問題になる可能性があります。
  6. あなたが提供した IOErrorEvent-example を理解できません。意図的にエラーをスローし、どこかでキャッチしてから、無効な urlRequest の前に catch ブロックの外でスクリプトを続行することを期待していますか?

あなたが説明していたエラー #1009 は非常に単純です。その関数を入力すると、変数 "txtFld"、"xml" にアクセスできないか、xml が期待どおりに表示されません。

これはすべて次のように要約されます。

  • 物事が初期化/作成されたとき、および物事が呼び出されたときに、より多くのコンテキストを提供しない限り、問題を解決することはできません.現在、どちらにも正しいコンテキストを提供せずに初期化と呼び出しを混合しています
于 2012-05-22T10:48:27.630 に答える