这个问题使我疯狂,我不知道我在这里错过了什么。这是我的代码:AS3:功能之外的访问变量
package {
\t
\t import flash.display.*;
\t import flash.text.*;
\t import flash.events.*;
\t import flash.net.*;
\t import flash.xml.*;
\t
\t public class PopUp extends Sprite {
\t \t
\t \t public var container:Array = new Array();
\t \t public function PopUp() {
\t \t \t
\t \t \t var contentXML:XML = new XML();
\t \t \t var XML_URL:String = "./content/content.xml";
\t \t \t var contentXMLURL:URLRequest = new URLRequest(XML_URL);
\t \t \t var contentLoader:URLLoader = new URLLoader(contentXMLURL);
\t \t \t contentLoader.addEventListener("complete", FuncXML);
\t \t \t
\t \t \t function FuncXML(event:Event):void {
\t \t \t \t contentXML = XML(contentLoader.data);
\t \t \t \t for each (var item in contentXML.item) {
\t \t \t \t \t
\t \t \t \t \t var txtbox:Sprite = new Sprite();
\t \t \t \t \t txtbox.graphics.beginFill(0x444444, 0.9);
\t \t \t \t \t txtbox.graphics.drawRoundRect(0, 0, 100, 100, 15, 15)
\t \t \t \t \t txtbox.graphics.endFill();
\t \t \t \t \t txtbox.name = "txtbox_"+item.settings.target;
\t \t \t \t \t addChild(txtbox);
\t \t \t \t \t container.push(txtbox);
\t \t \t \t }
\t \t \t \t trace(container.length); // Returns 2
\t \t \t }
\t \t trace(container.length); // Returns 0
\t \t }
\t }
\t
}
此代码应创建一个XML文件的内容文本框的最终版本,但我不能让含量超出了功能的“FuncXML ”。我试着跟踪。函数内部的轨迹返回“容器”的正确长度,即2。函数外部,轨迹返回0.请问这里有什么问题吗?
谢谢您的回答!但是我怎样才能从课堂外访问数组“容器”?我在我的主文件中试过: 'var newTxt:PopUp = new PopUp(); trace(newTxt.container.length); ' 但它再次返回0。 – patrickhoehn
注意以上Andrea给出的答案。在你追踪数组长度为0时,因为你的XML尚未加载。 – Nbooo
@patrickhoehn我已经更新了我的答案,请看看。希望它会有所帮助。 – Nbooo