saturdayMedlem sedan jan. 2007133 inlägg Börjar bli stammis i detta forum nu.
_global.myLevel = "2"
var localLevel = "_level"+_global.myLevel
localLevel.contact.gotoAndPlay(2);
Om jag skriver ut variabeln localLevel i ett textfält säger den "_level2". Men men det fungerar inte.
Om jag byter "localLevel.contact.gotoAndPlay(2);" till "_level2.contact.gotoAndPlay(2);" fungerar det, men jag vill styra leveln dynamiskt via en variabel.
Jag förmodar att det beror på att localLevel är i formatet string. Men jag vet inte vad exempelvis "_level4" är i för format?
Vad och hur formaterar jag localVariabel till rätt format för att Flash ska förstå?
Har du provat:
[locallevel].contact.gotoAndPlay(2);
eller:
["_level"+_global.myLevel].contact.gotoAndPlay(2);
saturdayMedlem sedan jan. 2007133 inlägg Prövade med:
_global.myLevel = "2"
var localLevel = "_level"+_global.myLevel
[localLevel].contact.gotoAndPlay(2);
Det fungerade inte och textfönstret skriver ut "levelundefined".
Om jag kör med...
_global.myLevel = "2"
["_level"+_global.myLevel].contact.gotoAndPlay(2);
Fungerade det inte heller men inget skrivs ut i textfönstret, konstigt nog då resultatet borde bli precis det samma.
Level är ett objekt men du kan inte börja en referens med en dynamisk varibel.
Däremot går det bra att köra t.ex:
var lvl_num:Number = 2;
var localLevel:Object = "_level"+lvl;
_level0[localLevel].contact.gotoAndPlay(2);
Det blir alltså "_level0._level2.contact" som är referensen och eftersom "_level2" är liksom allt annat ett objekt som ligger i _level0's scope så är det inga problem.
Det var inget jag tänkt på, men kan vara bra att ha vetskap om i framtiden.
Tackar.
saturdayMedlem sedan jan. 2007133 inlägg Scriptet ovan fungerar inte heller.
Får följande output när jag exporterar filen:
***Error** Symbol=Symbol 6, layer=Layer 1, frame=1:Line 11: Expected a field name after '.' operator.
_level0.[localLevel].contact.gotoAndPlay(2);
**Error** Symbol=Symbol 6, layer=Layer 1, frame=1:Line 12: Statement must appear within on handler
gotoAndStop(2);
**Error** Symbol=Symbol 6, layer=Layer 1, frame=1:Line 13: Unexpected '}' encountered
}*
Koden ser exakt ut så här...
on (release){
var lvl_num:Number = 2;
var localLevel:Object = "_level"+lvl;
_level0.[localLevel].contact.gotoAndPlay(2);
}
Och dessutom ser jag inte hur min globala variabel kommer in.
Ooops...kom med en punkt för mycket.
Med din globala variabel skall det vara:
_global.myLevel = "2"
var localLevel:Object = "_level"+_global.myLevel
_level0[localLevel].contact.gotoAndPlay(2);
du har en punkt för mycket mellan _level0 och [localLevel] och så har du inte skrivit hela variabelnamnet lvl_num
var lvl_num:Number = 2;
var localLevel:Object = "_level"+lvl_num;
_level0[localLevel].contact.gotoAndPlay(2);
så ska det vara.
Din globala variabel är inte med i den kodsnutten, då får du ju t ex ändra:
var lvl_num:Number = 2;
till:
var lvl_num:Number = _global.myLevel;
/red det tog tydligen mig över 6 minuter att skriva detta meddelande så blixten hann före. :r
saturdayMedlem sedan jan. 2007133 inlägg Båda senaste inläggen får textfältet att skriva ut "_level2" och outputen klagar inte men "_level0[localLevel].contact.gotoAndPlay(2);" fungerar fortfarande inte. Flash verkar fortfarande inte förstå vad localLevel eller lvl_num är.
/red Måste haft något annat fel för nu fungerade det plötsligt.
Tack för hjälpen! Grymt. :)
Visst är det en härlig känsla när det fungerar. :)