dynamisch flash menu probleem

Ik ben een dynamische image gallery aan het maken in Flash, gebasseerd op een XML-bestand. Nu ik bezig ben met het menu (dat bestaat uit een rij nummers, het aantal plaatjes dat in het xml-bestand zit) loop ik tegen een aantal vervelende problemen aan.

De handigste manier op het menu te maken leek mij om een for loop te draaien, het menu op te laten bouwen met attachMovie en er vervolgens een onPress functie aan koppelen, met deze code:

[code:1:65ac1fd45f]
function makeMenu(gallery_array)
{
for(i = 0; i < gallery_array.length; i++)
{
if (i < 12)
{
_root.attachMovie("shape1","menuitem"+i+"_mc",2000+i);
_root["menuitem"+i+"_mc"]._x = _global.menuX + (_root["menuitem"+i+"_mc"]._width * i);
_root["menuitem"+i+"_mc"]._y = _global.menuY;
_root["menuitem"+i+"_mc"].number.text = i + 1;

		_root&#91;&quot;menuitem&quot;+i+&quot;_mc&quot;&#93;.onPress = function&#40;&#41;
		&#123;
			trace&#40;i&#41;;
		&#125;
	&#125;
&#125;

}
[/code:1:65ac1fd45f]

Het enigste probleem is nu, dat als ik op een willekeurige knop druk, ik niet het nummer getraced krijg waar ik op geklikt heb, maar het nummer krijg te zien van de laatste foto in het xml-bestand (in mijn geval is dat 14).

Weet iemand hoe ik op de beste manier zo’n dynamisch menu als dit kan maken? Zodat ik in ieder geval het juiste nummer kan doorsturen naar een functie die de foto weer doet laden?

Ter demonstratie heb ik een voorbeeld van het probleem online geplaatst:
http://www.zcvalkenburg.nl/xml_gallery/

je kan de naam van je element trace met trace(this.name); daar ken je dan i uit strippen. Er zal wel een betere oplossing zijn, maar ik heb niet veel goesting om te denken (examens hé)

_root["menuitem"+i+"_mc"].onPress = function() { trace(i); }

maak daar eens

_root[“menuitem”+i+"_mc"].onPress = function(i)
{
trace(i);
}

van

[code:1:9b77b44069] function makeMenu(gallery_array) { for(i = 0; i < gallery_array.length; i++) { if (i < 12) { _root.attachMovie("shape1","menuitem"+i+"_mc",2000+i); _root["menuitem"+i+"_mc"]._x = _global.menuX + (_root["menuitem"+i+"_mc"]._width * i); _root["menuitem"+i+"_mc"]._y = _global.menuY; _root["menuItem"+i+"_mc"].id = i; _root["menuitem"+i+"_mc"].number.text = i + 1;

		_root&#91;&quot;menuitem&quot;+i+&quot;_mc&quot;&#93;.onPress = function&#40;&#41;
		&#123;
			trace&#40;id&#41;;
		&#125;
	&#125;
&#125;

}
[/code:1:9b77b44069]

gewoon vars toekennen aan je mc.

Beter nog, je maakt er best trace(this.id); van

als ik de volgende code gebruik: [code:1:a7d0a5489e] function makeMenu(gallery_array) { var id:Number; for(i = 0; i < gallery_array.length; i++) { if (i < 12) { _root.attachMovie("shape1","menuitem"+i+"_mc",2000+i); _root["menuitem"+i+"_mc"]._x = _global.menuX + (_root["menuitem"+i+"_mc"]._width * i); _root["menuitem"+i+"_mc"]._y = _global.menuY; _root["menuItem"+i+"_mc"].id = i; _root["menuitem"+i+"_mc"].number.text = i + 1;

		_root&#91;&quot;menuitem&quot;+i+&quot;_mc&quot;&#93;.onPress = function&#40;&#41;
		&#123;
			trace&#40;this.id&#41;;
		&#125;
	&#125;
&#125;

}
[/code:1:a7d0a5489e]

en ik klik op een menuitem, dan krijg ik “undefined”, het gaat dus ergens niet goed.
Ik krijg overigens ook undefined terug als ik gewoon id doe tracen ipv this.id.

mijn fout...

_root[“menu[b:77d5ae97e2]i[/b:77d5ae97e2]tem”+i+“mc”].id = i;

:D nu werkt het, geweldig! Dankjewel.

(wel stom natuurlijk dat ik dat foutje zelf niet zag…)

De uiteindelijke versie heb ik hier online gezet:
http://www.zcvalkenburg.nl/xml_gallery/