【发布时间】:2012-01-12 18:19:06
【问题描述】:
我在我的事件处理函数(该函数在 event.COMPLETE 之后执行)期间以及如果我在我的事件中跟踪对象时为我的 xml 对象 (xml = new XML(e.currentTarget.data);) 设置了一个值函数处理程序,它显示我的 xml 数据。
但是如果我尝试在事件处理函数之外跟踪它,它不会显示我的 xml 内容。有没有办法让我的 xml 对象内容值显示在其他函数中但不在事件处理函数中?
private var xml:XML;
public function XMLLoader(xmlURL:String)
{
var xmlURLRequest:URLRequest = new URLRequest(xmlURL);
var xmlURLLoader:URLLoader = new URLLoader(xmlURLRequest);
xmlURLLoader.addEventListener(Event.COMPLETE, xmlData);
}
private function xmlData(e:Event):void
{
e.currentTarget.removeEventListener(Event.COMPLETE, xmlData);
xml = new XML(e.currentTarget.data);
dispatchEvent(new Event(Event.COMPLETE));
trace(xml);
}
public function getXMLData():void
{
//I've find out that this shows null because this function is faster
//what do i do? put an event.complete in every following function?
trace(xml);
}
谢谢。
【问题讨论】:
-
私有变量 xml:XML;公共函数 XMLLoader(xmlURL:String) { var xmlURLRequest :URLRequest = new URLRequest(xmlURL); var xmlURLLoader :URLLoader = new URLLoader(xmlURLRequest); xmlURLLoader.addEventListener(Event.COMPLETE, xmlData); } 私有函数 xmlData(e:Event):void { e.currentTarget.removeEventListener(Event.COMPLETE, xmlData); xml = 新 XML(e.currentTarget.data); dispatchEvent(新事件(Event.COMPLETE));跟踪(xml); } 公共函数 getXMLData():void { trace(xml); }
-
您能否将代码发布到您实例化
XMLLoader并调用getXMLData()方法? -
公共类 XMLLoader 扩展 EventDispatcher { private var xml:XML;公共函数 XMLLoader(xmlURL:String) { var xmlURLRequest:URLRequest = new URLRequest(xmlURL); var xmlURLLoader:URLLoader = new URLLoader(xmlURLRequest); xmlURLLoader.addEventListener(Event.COMPLETE, xmlData); } 私有函数 xmlData(e:Event):void { e.currentTarget.removeEventListener(Event.COMPLETE, xmlData); xml = 新 XML(e.currentTarget.data); dispatchEvent(新事件(Event.COMPLETE)); trace(xml);//这个显示 } public function getXMLData():XML { trace(xml); //这个不显示 } }
-
您能否在您的问题中发布代码。这样它的可读性更高。但我想看到的是你在哪里调用
getXMLData()和new XMLLoader("xmlURL")。
标签: flash actionscript-3 flash-builder flash-cs5 flash-cs4