webForumDet fria alternativet

XML for loop MouseEvent

6 svar · 543 visningar · startad av krokodilen

krokodilenMedlem sedan juni 200776 inlägg
#1

Jag laddar in knappar i en holder, och antalet knappar samt "knapptext" styrs via xml. Men hur kan jag hämta en variabel från en specifik knapp som tex vilket nummer (myNum) det är på knappen man klickat på, via MouseEvent?

Har provat med "target", men utan framgång. Hade varit lysande om någon kunde hjälpa en vilsen själ på rätt väg :)

Här kommer ett utsnitt med den berörda koden:

function urlLoaded(e:Event):void {
	xml = XML(e.target.data);
	xmlList = xml.children();
	//trace(xmlList.length());
	
	
var i:int;
	
	for (i=0; i<xmlList.length(); i++) {
	
		var btn:nameBtn = new nameBtn(xmlList[i].nameStr);
		arrayBtn.push(btn);
		arrayBtn.myNum = i;
		arrayBtn[i].y = i*22;
		arrayBtn[i].x = 0;
		btnContainer.addChild(btn);
		var nameXML:String = xmlList[i].name;
		nameXML = nameXML.toUpperCase();
		arrayBtn[i].name_txt.text = nameXML;
		arrayBtn[i].addEventListener(MouseEvent.CLICK, btnClick);

		
		function btnClick(e:MouseEvent):void {
			trace(???.myNum);
		}
	}
}

Har gjort detta tidigare i AS2 utan problem, och då skrev man bara

trace(this.myNum);
SoloSquadMedlem sedan sep. 201010 inlägg
#2

Du är helt på rätt spår! Med target.name får du fram namnet på ditt objekt som en sträng. Sannolikt vill du också sätta det när du itererar genom XML-innehållet. Flash kommer annars döpa objektet till 'instance[x]'.

krokodilenMedlem sedan juni 200776 inlägg
#3

Ok, gott att veta att man är på rätt väg, tack för svar! :)
Precis, när jag nu provar med "e.target.name" får jag fram precis som du säger, "instance[x]". Men hur menar du att jag utveckla detta så jag kan få fram tex "myNum" från just den aktuella knappen?
Tacksam för svar :)

SoloSquadMedlem sedan sep. 201010 inlägg
#4

arrayBtn.name = 'myNum' + ;

Ger objekten namnet 'myNum1', 'myNum2' osv.

krokodilenMedlem sedan juni 200776 inlägg
#5

Hmm, underligt. Trace'ar fortfarande "instance[x]". Vad kan vara fel?

SoloSquadMedlem sedan sep. 201010 inlägg
#6

Prova att i stället använda currentTarget. Det kan vara ett annat objekt i din knapp som fångar händelsen.

e.currentTarget.name

krokodilenMedlem sedan juni 200776 inlägg
#7

Nu så! Tackar så ödmjukast :)

125 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)