PDA

View Full Version : EventListener in for loop



dhess
August 25th, 2008, 06:13 AM
Hey everybody

I found a lot of information on this site. Great job!

Now I came over a problem wich is really strange. I'm parsing a XML File and loop some nodes to create Links. On each link i'm going to add EventListeners for MouseDown, MouseOver and MouseOut actions.

It works perfectly. But the first Link (Index 0) is not working. It doesnt add an EventListener to it. I can't see the problem, can you help me?



function loadXML( xmlpath:String ) {
var xmlloader:URLLoader = new URLLoader();
xmlloader.load(new URLRequest( xmlpath ));
xmlloader.addEventListener( Event.COMPLETE, parseXML );
}

function parseXML( e:Event ) {
var xml_document:XML = new XML(e.target.data);
xml_document.ignoreWhitespace = true;

var titel:Titel= new Titel();
titel.titel.text = xml_document.Titel.text();
titel.alpha = 0;
titel.x = xml_document.Titel.@x;
titel.y = xml_document.Titel.@y;
addChild(titel);
for (var i:int = 0; i<xml_document.Links.Link.length(); i++) {
Links[i] = xml_document.Links.Link[i].text();
Links[i][1] = xml_document.Links.Link[i].@url;
Links[i][2] = xml_document.Links.Link[i].@color;
Links[i][3] = xml_document.Links.Link[i].@rollover;

}
setElements();
}

function setElements() {
for (var j:int = 0; j < Links.length; j++) {
var Link:MovieClip = new MovieClip();

/* Background */
var Background:MovieClip = new MovieClip();
Background.graphics.beginFill(0xFF0000);
Background.graphics.drawRect(0, 0, 200, 14);
Background.graphics.endFill();
Background.alpha = 0;
Background.name = "Background";
Background.x = 0;
Background.y = (j*19)+2;
Link.addChild(Background);

/* Icon */
var LinkIcon:linkicon = new linkicon();
LinkIcon.y = j*19;
LinkIcon.mouseEnabled = false;
Link.addChild(LinkIcon);

/* Text */
var color = "0x"+Links[j][2];
var Format:TextFormat = new TextFormat("Verdana", 12, color, true);
var Text:TextField = new TextField();
Text.x = 15;
Text.y = j*19;
Text.autoSize = TextFieldAutoSize.LEFT;
Text.text = Links[j][0];
Text.setTextFormat(Format);
Text.mouseEnabled = false;
Link.addChild(Text);


/* Rollover Linie */
var Line:MovieClip = new MovieClip();
Line.graphics.beginFill(0xFFFFFF);
Line.graphics.drawRect(0, 0, Text.textWidth, 1);
Line.graphics.endFill();
Line.alpha = 0;
Line.name = "Line";
Line.x = 17;
Line.y = (j*19)+15;
Link.addChild(Line);


Background.addEventListener(MouseEvent.MOUSE_DOWN, linkaction);
if(Links[j][3] == "ja"){
Background.addEventListener(MouseEvent.MOUSE_OVER, linkaction);
Background.addEventListener(MouseEvent.MOUSE_OUT, linkaction);
}

LinkBox.addChild(Link);
}
}




Thank you