Avatar billede paask Nybegynder
16. februar 2002 - 23:21 Der er 9 kommentarer og
2 løsninger

Eksterne variabler i ét tekstfelt

Hey.

Jeg har en ekstern txt fil med flere tekststykker defineret med hver deres varabel. Det jeg gerne vil er, at kunne vise disse tekststykker i ét dynamisk tekstfelt frem for at have felter til samtlige tekststykker.

Jeg har et dynamisk tekstfelt med det originale navn 'tekst'. De eksterne variabler hedder tekst1, tekst2 etc.

Idéen er, at have flash filen dynamisk, så jeg kan tilføje tekststykker (og deres tilsvarende tekstn variabel) i den eksterne .txt uden at skulle rette i flashen. Det er til et simpelt formål og derfor bruger jeg ikke asp, php el.lign.

Jeg har forsøgt en del forskellige metoder - at ændre _root.tekst dynamisk til _root.tekstn løbende, men det er vist ikke helt muligt ændre med _name propertien!?

Nogen idéer? Det bugger mig bigtime.
Avatar billede lingoman Nybegynder
17. februar 2002 - 02:44 #1
Dersom antallet af variabler også skal være dynamisk skal vi formatere den eksterne tekstfil.

i stedet for det normale

tekst1=mit&tekst2=navn&tekst3=er&tekst4=paask

separerer vi variablerne ved at skrive teksten på følgende facon

all=mit;navn;er;paask

man kan derfor tilføje et ubegrænset antal data på samme måde

når variablen "all" er indlæst indlæses de til et array

textArray=all.split(";");

Herefter kan vi sætte variablerne

tekst=""; // vi opbygger teksten
for ( i = 0; i < textArray.length ; i++){
  _root["tekst"+i]= textArray[i];
  tekst=tekst+ "tekst" + i + " er " +_root["tekst"+i] + newline;
}

dette har nu sat variablerne til

_root.tekst0 = mit;
_root.tekst1 = navn;
_root.tekst2 = er;
_root.tekst3 = paask;

og dit dynamiske tekstfelt til

tekst0 er mit
tekst1 er navn
tekst3 er er
tekst3 er paask

mvh geo
Avatar billede pixelpaw Nybegynder
17. februar 2002 - 02:46 #2
Skal de sammensættes? Det kan du gøre sådan her:

tekst = tekst1 + tekst2 + tekst3;

Du kan eventuelt dele dem med et tegn:

tekst = tekst1 + " . " + tekst2 + " . " + tekst3;

Hvis du bare skal bruge det samme tekst felt, men hvor du vil udskifte indholdet? Det kan du gøre med nogle knapper, der måske kunne være dynamiske, noget i stil med:

on (release) {
  _root.tekst = _root["tekst" + n];
}

eller bare

on (release) {
  _root.tekst = _root.tekst1;
}

Og til dit _name spørgsmål, så du godt skifte _name ud på et movieclip, men ikke på et tekstfelt. Men går ikke ud på at du skal skifte navnet på tekstfeltet, men bare selve indholdet.
Avatar billede pixelpaw Nybegynder
17. februar 2002 - 02:47 #3
hehe, vågne klokken lort og læser indlæg på Eksperten... vi har ikke noget liv ;o)
Avatar billede lingoman Nybegynder
17. februar 2002 - 02:48 #4
Det siger du ikke;)
Avatar billede paask Nybegynder
17. februar 2002 - 04:38 #5
Gaaab - jeg har lige halvsovet til den ringeste film. Så er det altid ganske rart at se svar på eksperten ;0)

Jeg har lige forsøgt med dit foreslag Geo, det ser ikke ud til at virke helt?! Variablen all bliver hentet fint, men er umulig at splitte, hvormed arrayet ikke bliver defineret og all stadig er stringen "mit;navn;er;paask". Det fatter jeg ikke lige, men er også pænt træt nu. Det er i øvrigt en ganske nice konstrueret iteration! Den må jeg lige få til at virke i morgen :0)

Alt andet lige virker det fint med _root.tekst = _root["tekst" + n]; som du skrev pixelpaw. Sammen med en taeller variabel til at forøge / formindske værdien af n er alt fino.

Nu vil jeg gå glad og tilfreds i seng, tak for hjælpen begge to :0)
Avatar billede pixelpaw Nybegynder
17. februar 2002 - 09:51 #6
velbekomme

damn jeg er tidligt oppe på en SØNDAG! :o(
Avatar billede lingoman Nybegynder
17. februar 2002 - 12:06 #7
go' morn. og takker for point.
Jeg kan ikke lige få øje på fejlen, men det er sådan jeg normalt gør.
Paster lige fungerende version ind senere.
Avatar billede lingoman Nybegynder
17. februar 2002 - 14:14 #8
Jeg tror at jeg ved hvor det er gået galt.
Har du husket at tjekke om strengen er læst ind ?
Man kan altså ikke regne med at variablen er til stede blot fordi man kan se den i et tekstfelt.
Hvis koden bliver eksekveret blot et millisekund før strengen er færdig indlæst, så virker det jo ikke, men man ser
alligevel variablen i tekstfeltet i næste øjeblik!
Man skal derfor sikre sig at variblen er 100% loaded.
Det kan du gøre ved at hæfte en sidste variabel på i din .txt fil

all=mit;navn;er;paask&ready=ok

Så laver du en lykke mellem nogle frames

////  action i frame x  //////

ready=false;
loadVariables("din.txt","");

////  action i frame (x+2)  ////

if (ready=!"ok") {
  gotoAndPlay(_currentFrame -1);
} else {
  textArray=all.split(";");
  tekst="";          // vi opbygger teksten
  for ( i = 0; i < textArray.length ; i++){
      _root["tekst"+i]= textArray[i];
      tekst=tekst+ "tekst" + i + " er " +_root["tekst"+i] + newline;
  }
}


Den vil nu loope mellem frames (x+1) og (x+2) indtil den sidste variabel ready er sat.

mvh geo
Avatar billede lingoman Nybegynder
17. februar 2002 - 14:15 #9
lykke>> løkke
Avatar billede paask Nybegynder
17. februar 2002 - 14:17 #10
Ah true, det er selvfølgeligt det! Jeg listede bare variablerne med debuggeren og så all var der og arrayet undefined. Det er selvfølgelig fordi det ikke var færdig indlæst...

Jeg takker og bukker så ærbødigst endnu en gang :0)
Avatar billede lingoman Nybegynder
17. februar 2002 - 14:18 #11
selvtak :)
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