webForumDet fria alternativet

XML for loop MouseEvent

Flash

6 svar · 545 visningar · startad av krokodilen

Medlem sedan juni 200776 inlägg
Frågan#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);
Medlem 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]'.

Medlem 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 :)

Medlem sedan sep. 201010 inlägg
#4

arrayBtn.name = 'myNum' + ;

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

Medlem sedan juni 200776 inlägg
#5

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

Medlem 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

Medlem sedan juni 200776 inlägg
#7

Nu så! Tackar så ödmjukast :)

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)