webForumDet fria alternativet

Varför fungerar inte detta?

9 svar · 401 visningar · startad av saturday

saturdayMedlem sedan jan. 2007133 inlägg
#1

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å?

andyoumaydieMedlem sedan dec. 2006608 inlägg
#2

Har du provat:

[locallevel].contact.gotoAndPlay(2);

eller:

["_level"+_global.myLevel].contact.gotoAndPlay(2);
saturdayMedlem sedan jan. 2007133 inlägg
#3

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.

BlixtsystemsMedlem sedan maj 2005704 inlägg
#4

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.

andyoumaydieMedlem sedan dec. 2006608 inlägg
#5

Det var inget jag tänkt på, men kan vara bra att ha vetskap om i framtiden.
Tackar.

saturdayMedlem sedan jan. 2007133 inlägg
#6

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.

BlixtsystemsMedlem sedan maj 2005704 inlägg
#7

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);
andyoumaydieMedlem sedan dec. 2006608 inlägg
#8

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
#9

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. :)

andyoumaydieMedlem sedan dec. 2006608 inlägg
#10

Visst är det en härlig känsla när det fungerar. :)

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)