1

希望有人可以帮助我...我在 Flash 中加载了一个外部 XML 文件。它工作得很好,但从这周开始就不行了。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:无法访问空对象引用的属性或方法。在 main3_fla::MainTimeline/afterClick2()

并且 XML 文件根本没有加载。如果我取出 XML 中的所有链接,文本加载完美。

谁能告诉我怎么了?谢谢

4

1 回答 1

0

这整个“问题”真的很奇怪,你确定你在写 AS3 代码吗?我一生无法理解以下事情:

  1. 你的问题是什么?您可以一次加载您的 xml 文件和所有链接吗?第二次尝试重新加载 xml 文件时会出现问题吗?每当您在 xml 文件中没有链接时,它是否总是有效?
  2. 您提到了一个加载您的 xml 文件的按钮,我在您的代码中没有看到提供该功能的按钮
  3. 您试图从哪里加载您的 xml 文件,它是来自您计算机的本地文件还是来自某个地方的网络(在网络服务器上)?
  4. 你做了一个新的 URLRequest("background.xml") 但你没有提供绝对 URL,这意味着这可能是某种路径更改,所以“background.xml”第二次链接到其他东西(不知道如何,但一切皆有可能)
  5. 您的代码看起来很奇怪,我无法判断整个代码是构造函数的一部分还是其他东西。您不止一次地执行“addChild”,如果 txtFld 是某种类成员并且该类有多个实例,这可能会成为一个问题。
  6. 我不明白您提供的 IOErrorEvent-example,您故意抛出一个错误,在某处捕获它,然后期望它在无效的 urlRequest 之前在 catch 块之外继续使用脚本?

您描述的错误 #1009 非常简单,当您输入该函数时,您无法访问变量“txtFld”、“xml”或 xml 看起来不像您期望的那样。

这一切都归结为以下几点:

  • 除非您为初始化/创建事物以及调用事物的时间提供更多上下文,否则我无法帮助您解决问题,因为现在您正在混合初始化和调用,而没有为任何一个提供正确的上下文
于 2012-05-22T10:48:27.630 回答