Avatar billede flashlite Nybegynder
27. maj 2008 - 00:41 Der er 4 kommentarer og
1 løsning

Bruge variabel i en løkke til at navngive nyt mc (as3)

Hej jeg er ved at skifte over til as3 fra as2 men har et lille problem der driller en del steder:

Jeg vil gerne lave noget i stil med:

for(var i:Number = 0;i<fileCount;i++)
{
    var picHolder[i]:picContainer = new picContainer();
    addChild(picHolder[i]);
}

det virker ikke, nogle der kan forklare mig hvordan dette evt gøres?
Avatar billede maqhem Nybegynder
27. maj 2008 - 08:08 #1
Det er ikke mere nødvendigt at bekymre sig om instance names, når du arbejder med objekter, der er lavet med ActionScript:

for(var i:int = 0; i < fileCount; i++)
{
    var picHolder:picContainer = new picContainer();
    addChild(picHolder);
}

picHolder er her bare den lokale reference, der er ikke-eksisterende, når din løkke afsluttes. Hvis du senere hen vil kunne tilgå dine objekter, kan du samle dem i et array, men det mest optimale vil være at samle dem i en Sprite på scenen, som du så looper igennem med for..in, når du skal tilgå nogle af dem, og ellers laver din klasse så avanceret, at du kan klare alt inde i din for, og at dine picHolders klarer resten interaktivt og automatisk direkte i deres klassedefinitioner.
Avatar billede flashlite Nybegynder
27. maj 2008 - 12:08 #2
Nice se, nu begynder det at give mening, men hvad så med f.eks.:

// Button loop
var buttons:Array = new Array("play", "back", "fs", "next", "prev", "speaker");
var buttonFunc:Array = new Array("Click", "Over", "Out");
for (var i:Number = 0; i<buttons.length; i++) {
    ui_elements["btn_"+buttons[i]].buttonMode = true;
// virker fint med den løkke her det er først herefter det går galt!
    for (var j:Number = 0; j<buttonFunc.length; j++) {
        ui_elements["btn_"+buttons[i]].addEventListener(MouseEvent.CLICK, buttons[i]+buttonFunc[j]);

// Det virket ikke så prøvet jeg
        var btnFunction:name = new name(buttons[i]+buttonFunc[j]);
        ui_elements["btn_"+buttons[i]].addEventListener(MouseEvent.CLICK, btnFunction);
// Igen uden held, kan det gøres
    }
}

Damn jeg glæder mig til jeg får styr på de basale i as3 for syntes det virker lovende.

maqhem - Kan du ikke lige skrive et svar i stedet for en kommentar for du ramte sømmet på øjet og bør få dine points, så jeg kan lukke spørgsmålet.
Avatar billede maqhem Nybegynder
27. maj 2008 - 15:06 #3
btnFunction skal være en funktion. Det er den, der kaldes, når din event afvikles. Når du skriver således:

---
ui_elements["btn_"+buttons[i]].addEventListener(MouseEvent.CLICK, buttons[i]+buttonFunc[j]);
---

i en for med j, skal funktionen buttons[i]+buttonFunc[j] altså kaldes for hver eneste j-værdi. Generelt kan det siges, at det ikke giver nogen mening at skrive plus (+) der.
Avatar billede flashlite Nybegynder
28. maj 2008 - 15:08 #4
Nok en gang siger jeg mange tak for disse oplysninger det er jo intet mndre end fantastisk, så har jeg lidt at give mig til/sætte mig ind i.

Gider du ikke lige smide et svar så jeg kan tildele dig dine points og lukke spørgsmålet.
Avatar billede maqhem Nybegynder
28. maj 2008 - 15:34 #5
Jo da. Her er svaret. Held og lykke med at lære AS3 :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester