16. februar 2002 - 23:21Der 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!?
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; }
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.
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)
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.
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)
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.