Avatar billede andersthingholm Nybegynder
06. oktober 2004 - 23:31 Der er 12 kommentarer og
1 løsning

Dynamiske levels

Hej,

Jeg har 2 filer - main og core.

Main er i level 0 og core indlæses i level 10.

Jeg har så denne kode i main:

_global.BASE_LEVEL = _level10

Denne vil jeg gerne kunne bruge i alle mulige level - som reference til level10, men den ser ikke ud til at ville gøre det.

Noget forslag?

VH

Anders
Avatar billede baitianlong Nybegynder
07. oktober 2004 - 00:24 #1
Jeg vil gætte på at det virker hvis du definerer den som (i level0, som du skriver):

BASE_LEVEL = _level10

og kalder den med:

_root.BASE_LEVEL

_root er jo altid level0 selv om film læses ind ovenpå.
Avatar billede andersthingholm Nybegynder
07. oktober 2004 - 00:37 #2
Hvis jeg i level 0 har denne kode:

BASE_LEVEL = _level10;

tracer den undefined ud ved trace(BASE_LEVEL)
Avatar billede nikolajdu Nybegynder
07. oktober 2004 - 02:19 #3
BASE_LEVEL = new Object();
Object.BASE_LEVEL = _level10;

men husk du ikke kan sætte noget til at være _level10 før _level10 eksisterer. Det kan du løse ved f.eks at oprette et tomt movieclip på level10 inden du henter indhold.
Avatar billede nikolajdu Nybegynder
07. oktober 2004 - 02:19 #4
Så burde du også kunne nøjes med global.
Avatar billede andersthingholm Nybegynder
07. oktober 2004 - 10:02 #5
Hej igen,

Ikke helt med. Mener du at jeg godt kan bruge _global?

Object.BASE_LEVEL - er den rigtig? Hvad er Object?

VH

Abders
Avatar billede barklund Nybegynder
07. oktober 2004 - 11:37 #6
Det bliver værre og værre det her, drenge!

For det første: _root er roden af det globale level, som man er på. Er man i _level10 inden i et movieclip er _root == _level10 (med mindre man har brugt lockroot).

For det andet: At gemme ting på Object har vi ikke gjort siden Flash 5 hvor vi ikke havde _global.

For det tredje: hele problemet ligger i, at man ikke kan skrive:

loadMovieNum("core.swf", 10);
_global.BASE_LEVEL = _level10;

For _level10 er (som nikolaj skriver) ikke loaded endnu.

Det eneste du skal gøre er enten at lave et setInterval-loop eller et frame-loop der testes for, om _level10 eksisterer og derefter udføre (eller i første frame af core.swf skrive):

_global.BASE_LEVEL = _level10;

Eller lave en global funktion og et globalt tal som:

_global.LEVEL = function(t) { return eval("_level"+t); };
_global.CORE_BASE = 10;

Så kan man alle steder skrive:

LEVEL(CORE_BASE);

Fordi den vil alle steder evaluere til _level10.

Men jeg ville nu nok slet ikke loade i levels og gå over til at bruge MovieClipLoader klassen og lave det meget pænere den vej rundt.
Avatar billede andersthingholm Nybegynder
07. oktober 2004 - 11:50 #7
Super smukt barklund. Smider du et svar?
Avatar billede barklund Nybegynder
07. oktober 2004 - 11:58 #8
Anytime :)
Avatar billede andersthingholm Nybegynder
07. oktober 2004 - 12:02 #9
Svar ? ;-)
Avatar billede barklund Nybegynder
07. oktober 2004 - 12:06 #10
Anytime :)
Avatar billede barklund Nybegynder
07. oktober 2004 - 12:34 #11
Tark for points :)
Avatar billede barklund Nybegynder
07. oktober 2004 - 12:34 #12
Selvfølgelig skal det lige nævnes, at hvis du fra en Flash 7 swf loader en Flash 6 swf eller omvendt, så har de IKKE samme _global men to forskellige. En lille detalje der måske er relevant her :)
Avatar billede pyroman Nybegynder
07. oktober 2004 - 15:15 #13
Jeg har heller aldrig kunnet se det smarte i at loade noget ind i levels end at loade det i movieclips... levels er kun til at definere hvad der skal ligge øverst...
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