Avatar billede oldnick Nybegynder
20. maj 2009 - 11:37 Der er 6 kommentarer

Sammensæt inctance name så den kan bruges i et for loop?

Hej, er der nogen som kan forklare hvordan jeg kan få nedenstående til at virker. Det drejer sig om at jeg har 5 kasser (box_1, box_2 ...) som skal udfører nedenstående handling.

Mit spørgsmål er hvordan jeg får den til at forstå at det er et instance navn?

<code>
import mx.transitions.Tween;
import mx.transitions.easing.*;

/* Denne dele skal erstattes af for loop!
var handler = new Tween(box_1, "_y", Bounce.easeOut, (box_1._y-100), box_1._y, 30, false);
var handler = new Tween(box_2, "_y", Bounce.easeOut, (box_2._y-110), box_2._y, 35, false);
var handler = new Tween(box_3, "_y", Bounce.easeOut, (box_3._y-120), box_3._y, 35, false);
var handler = new Tween(box_4, "_y", Bounce.easeOut, (box_4._y-110), box_4._y, 25, false);
var handler = new Tween(box_5, "_y", Bounce.easeOut, (box_5._y-130), box_5._y, 30, false);
*/

var i:Number;
var myVar:String;
var myVar = "box_";

for (i=1; i<6; i++) {

    var handler:Tween = new Tween(myVar[i], "_y", Bounce.easeOut, (myVar[i]._y-100), myVar[i]._y, 30, false);

    trace(myVar);
    trace(i);

}
</code>

Alternativt forsøg
<code>
function bounceFunc(instanceName_mc:String) {
   
    var handler:Tween = new Tween(instanceName_mc, "_y", Bounce.easeOut, (instanceName_mc._y-100), instanceName_mc._y, 30, false);
   
    }

var i:Number;

for (i=1; i<6; i++) {

    bounceFunc("box_"[i]);
    trace(bounceFunc);

}
</code>
Avatar billede anitavizdk Nybegynder
20. maj 2009 - 15:40 #1
Du skal have fat i deres parent.

container.box_1 == container["box_1"]

så du kan gøre følgende

for(i=1;i<6;i++){
    var handler:Tween = new Tween(container["box_"+i], "_y", Bounce.easeOut, (myVar[i]._y-100), myVar[i]._y, 30, false);
}

container skal selvf udskiftes med den korrekte parent, en kan ikke se hvad det er udfra din kode.
Avatar billede oldnick Nybegynder
25. maj 2009 - 12:01 #2
Tak, for dit svar.

Hvis det nu er _root så skal container vel være "_root"?

Jeg tester det lige. :)
Avatar billede oldnick Nybegynder
25. maj 2009 - 12:20 #3
Jeg har lidt problemer med at få det til at virker.

Denne kode bliver kaldt af en "setTimeout(firstAnima,100);" men der sker ikke noget i animationen.

Mine movieClips ligger i root og hvis jeg skriver _root.["box_"+i] får jeg en fejl, det vel fordi det ikke er en gyldig sammen sat sti (_root.["box_"+i])?

function firstAnima():Void {

for (i = 1; i < 6; i++) {

var boxName:Object;       
var boxName = ["box_"+i];
       
new Tween(boxName, "_y", Elastic.easeOut, (boxName._y-100), boxName._y, 40, false);
       
trace(boxName);
trace(i);

}

}
Avatar billede anitavizdk Nybegynder
25. maj 2009 - 12:44 #4
prøv følgende:

function firstAnima():Void {

for (i = 1; i < 6; i++) {
     
new Tween(_root["box_"+i], "_y", Elastic.easeOut, (_root["box_"+i]._y-100), _root["box_"+i]._y, 40, false);
     

}

}
Avatar billede oldnick Nybegynder
25. maj 2009 - 12:56 #5
Tak, det virker perfekt!

Altså så gælder det når man sammensætter en "sti" hvor man laver navne skal man ikke bruge (.) mellem parent og ["navn"+i].

Virker
Eks.: _root.container["navn"+i]

Virker ikke
Eks. _root.container.["navn"+i]

Er dette rigtigt?



Jeg har et andet spørgsmål som lige et kommet op, du måske kan svare hurtigt på (jeg lægger selvfølgelig lidt ekstra points oven i ;)

Hvordan kan jeg få firstAnima() til at sende det values med i en setTimeout(firstAnima,100); ?

Eks.: setTimeout(firstAnima(box_1),100);
Avatar billede anitavizdk Nybegynder
25. maj 2009 - 18:38 #6
Det er korrekt forstået.

_root.test._y = _root["test"]._y

Du kan sende argumenter med til din function således:
setTimeout(firstAnima(box_1),100,"hej","med","dig");

function firstAnima(arg1,arg2,arg3):Void {
trace(arg1);
trace(arg2);
trace(arg3);
for (i = 1; i < 6; i++) {
 
new Tween(_root["box_"+i], "_y", Elastic.easeOut, (_root["box_"+i]._y-100), _root["box_"+i]._y, 40, false);
   

}

}
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