I am trying to read a XML file and display its content in a simple list component or at th开发者_高级运维e console. The problem is that the event listener is triggered in an infinite loop.
The code:
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.addEventListener(Event.COMPLETE, processXML);
myLoader.load(new URLRequest("/songs/songs.xml"));
function processXML(e:Event):void {
myXML = new XML(e.target.data);
trace(myXML.*);
}
The xml file:
<?xml version="1.0" encoding="utf-8"?>
<Songs>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
</Songs>
The output:
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
<Song>Kalimba.mp3</Song>
<Song>Sleep Away.mp3</Song>
....
Firstly, is this just on the timeline of the IDE? If so, do you need to add a stop()
?
Secondly, you could remove the listener from the loader as soon as the COMPLETE
event comes out.
function processXML(e:Event):void {
myLoader.removeEventListener(Event.COMPLETE, processXML);
myXML = new XML(e.target.data);
trace(myXML.*);
}
精彩评论