"Globalt" tilgængelige stringsPrimary

Forums: 

Fra MadsViktor

 

Hey,

Hvordan laer jeg "globalt" tilgængelige strings?

Forstået sådan som strings jeg kan "hente" lige meget hvilket niveau jeg er på (om jeg er inde i et movieclip eller lign.)

I AS2 ville jeg bare ligge mine strings i _root - og hente dem derfra. Men hvordan gør jeg i AS3?

Med venlig hilsen,

Mads.

 

Hej Mads.

Ja, den går ikke mere. Du har stadig root (uden underscore), men den gælder kun for DisplayObject's, der er tilføjet display listen.

Løsningen på dit problem er at oprette en klasse der indeholder et eller flere statiske objekter. Da variablen er statisk vil den altid forholde sig til selve klassen og ikke den enkelte instans af klassen. Din klasse kunne f.eks. kalde sig Globals og se således ud:

package {
public class Globals {
public static var VARS:Object = new Object();
}
}

Gem den med navnet "Globals.as" og placer den sammen med din fla-fil. Nu kan du egentlig bare hælde i VARS på sådan her:

Globals.VARS.titel = "Hjælp mig nu";
Globals.VARS.sektion = "ActionScript 3.0";
trace("Du besøger " + Globals.VARS.titel +", og læser noget om " + Globals.VARS.sektion);

Nu står de jo bare efter hinanden, men Globals.VARS er altid tilgængelig - også inde i dine movie clips.

Se om det løser dit problem.

Fra MadsViktor

 

Hey,

Det virker for sin vis. Dog kan jeg ikke hente de variabler jeg laver i Globals klassen inde fra en function. Altså for eksempel vil jeg her ikke kunne bruge variablen Globals.VARS.variabelTing:

function funktionHer(){
//kode
Globals.VARS.variabelTing = "data data";
}

tekstFelt.text = Globals.VARS.variabelTing;

Det ovenstående virker altså ikke.. kan man gøre noget ved det?

Mvh.

Mads Viktor.

 

Hmmm, den kode jeg har givet dig der virker faktisk haha.

Men på den side jeg arbejder på virker det ikke- jeg roder selv lidt mere med det - så spørger jeg igen hvis jeg ikke kan finde ud af det :)