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;
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?
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é)
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;
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.