Avatar billede apj Nybegynder
20. marts 2004 - 22:27 Der er 15 kommentarer og
1 løsning

loade txt fil ind i flash

Jeg har en simpel flash med en lille menu hvor nogle buttons åbner et "flydende" MC med teksten.

Den tekst vil jeg gerne kunne ændre i en txt-fil istedetfor at skulle rette i fla'en hver gang.

Hvordan gør jeg?
Avatar billede _k Nybegynder
20. marts 2004 - 22:32 #1
Svarede for et par dage siden på noget tilsvarende. Spørg løs, hvis der er noget i det spørgsmål som adskiller sig markant fra det du vil.

http://www.eksperten.dk/spm/479190
Avatar billede apj Nybegynder
20. marts 2004 - 23:00 #2
Det er der. Jeg kan se det ser ud til du har styr på det - så rart at du er med :)

Jeg benytter Flash 5.

Det jeg gør nu er:

jeg har en menu.
menuen er et MC, som når man releaser button 1 f.eks. spiller hen til frame 20 hvor følgende står:
loadVariablesNum ("vision.txt", 0);
stop ();

teksten vision.txt er lavet i notepad og ligger i samme mappe.

I frame 20 har jeg lavet en "tekstholder", som: dynamisk text, multiline og sat kryds i selectable.

_________

Jeg har en mistanke om at txt bliver loadet ok, men at den ikke ved hvor det skal stå, idet jeg jo ikke kan finde et sted at navngive tekstholderen og heller vise hen til den fra de actions der er i frame 20.
Avatar billede apj Nybegynder
20. marts 2004 - 23:03 #3
Nu har jeg fundet ud af at kalde tekstholderen for "visionfelt", men aner ikke hvordan mine actions skal se ud.
Avatar billede apj Nybegynder
20. marts 2004 - 23:28 #4
Er Flash 5 sværere?
Avatar billede apj Nybegynder
20. marts 2004 - 23:49 #5
OK, nu har jeg fået det til at virke, men hvordan koder jeg i txt-filen for font-størrelsen - hvis jeg kun vil have et textfelt, men at jeg i txt-filen skal kunne lave noget text større end andet?
Avatar billede apj Nybegynder
21. marts 2004 - 00:47 #6
Jeg har også fundet ud af det med font størrelser, men..

Hvordan får jeg en txt-fil ind uden at lægge koden på en knap?

Knapperne fungerer og loader det fint ind.

Bortset fra at det kun er feltet "textdata" der virker (kan jeg ikke selv definere mine variable?)

Derudover - hvis jeg forsøger at sætte actions på et tomt lag i 1ste frame skulle man jo tro at den bare ville gøre det, men den åbner et explorervindue med txt-filen???
Avatar billede apj Nybegynder
21. marts 2004 - 01:45 #7
Alle selvdefinerede textholdere virker nu - nu er det kun det med at den ikke vil indlæse en txt fil fra starten uden at der skal trykkes på en knap.

Hvordan gør jeg det?

Hvis jeg finder ud af det skriver jeg det med det samme, så indtil da - please svar!
Avatar billede _k Nybegynder
21. marts 2004 - 14:13 #8
Okay, ser du har gang i en omgang hardcore "learning by doing" :o)

Importering af tekst i Flash 5 er lidt mere omstændelig end i MX/MX 2004. Det skyldes at man ikke har loadVars-objektet til rådighed, som ellers giver god kontrol over hvad man henter og ikke mindst hvad der skal ske når tingene er blevet hentet.

Det du oplever er, at Flash ikke har fået læst tekstfilen før du prøver at sætte dens indhold ind i et tekstfelt. Derfor virker det med knappen. I princippet kan du bare vente med at sætte tekstfeltets indhold til langt ude på tidslinjen, men det er IKKE nogen køn løsning, da man aldrig præcis kan forudsige hvornår et tekstdokument er læst ind og klar til brug.
I stedet kan du bruge en onClipEvent(data). Du laver simpelthen et mc, hvis eneste formål er at sidde og vente på at der sker noget - at teksfilen er hentet ind. Du kan placere dette mc udenfor stagen eller gøre det usynligt med _visible = false;

Tricket er at du loader ind i dette mc i stedet for til en level som du gør nu. Lad os kalde mc'et "loadMC":

loadVariables("vision.txt", loadMC);

På mc'et sætter du så koden (kender ikke stierne i din film, så dem sjusser du selv til):

onClipEvent(data) {
  _parent.tekstholder.text = this.variabel1;
}

data sætter så indholdet når der er noget at sætte.
Avatar billede apj Nybegynder
21. marts 2004 - 20:04 #9
Jeg kan ikke få det til at virke. JEg tror det er fordi jeg ikke er sikker på hvad i det du skriver der er hvad:

Der er jo:

1. tekstfilens navn
2. textvariablens navn (defineret i text-menuen) og som der refereres til i textfilen
3. Det mc's navn jeg vil have teksten ind i på scenen
4. Det MC som clipeventen skal ligge i der ligger udenfor scenen

Mine navne er:
1. front.txt
2. diverse
3. holder
4. loadmc

faktisk indeholder min "diverse"-mc 5 forskellige tekstfelter der loader hver deres tekst - disse er jo også i txt-filen "front.txt".

Front.txt ser som test sådan ud:

&header=
and goes the headline
&newsheader=
and goes the news headlines
&tekstdata=
and here goes the newstext
&diverse=
and here goes the diverse
&ratings=
Heartless_Chrome 2122 <br>Heartless_Tangra 2122<br>
Heartless_Guru 2122
the rest Lousy
Heartless_Chrome 2122
Heartless_Tangra 2122
Heartless_Guru 2122
the rest Lousy

Der er som du kan se 5 variable som gerne skulle stå på scenen fra starten.

_________________

Dette er hvad jeg har gjort med det du sagde:

lavet et mc udenfor scenen (loadmc). Jeg har højreklikket på det og indsat disse actions:

onClipEvent (data) {
    _parent.holder.text = diverse;
}

På et nyt lag inde i hovedfilmen har jeg højreklikket i 1ste frame og indsat:

loadVariables ("front.txt", "_root.loadmc");

_______________________________

Hvad har jeg ikke helt forstået?
Avatar billede apj Nybegynder
21. marts 2004 - 20:05 #10
Rettelse:

faktisk indeholder min "diverse"-mc 5 forskellige tekstfelter der loader hver deres tekst - disse er jo også i txt-filen "front.txt".

der skulle stå:

faktisk indeholder min "holder"-mc 5 forskellige tekstfelter der loader hver deres tekst - disse er jo også i txt-filen "front.txt".
Avatar billede _k Nybegynder
22. marts 2004 - 10:15 #11
Fejlen fra min side kan meget vel være syntaktisk. Det er længe siden jeg har arbejdet i Flash 5.0, så er ikke 100% sikker på hvad der er gammel/ny syntaks (eller rettere sagt: "præcis hvad 5.0 understøtter").

Som jeg læser det, har du problemer med loadVariables. Det der sker når du loader ind i et mc er, at dine variable kommer til at ligge inde i det. Det er faktisk ganske praktisk, for så ved man hvor de er (derfor navnet loadMC).
Du kan tjekke om der rent faktisk bliver loadet noget ind i mc'et:

onClipEvent (data) {
    trace("Data er kaldt. Udskriver den noget her: " + diverse); // Udskriver til output-vinduet
}

Hvis ovenstående virker, er der helt sikkert hul igennem, og så skal vi bare referere rigtigt til dine tekstfelter.
Når jeg anstrenger mig meget (og det er svært mandag morgen ;o) så mener jeg at kunne huske, at .text-propertien først er kommet til senere i Flash, derfor bør den korrekte sti til indholdet af et tekstfelt som hedder "tekstfelt" og ligger i _root:

_root.tekstfelt = "bla bla bla"; // variabelnavn på højre side af lighedstegnet for dig.

altså samlet, noget i retning af:
onClipEvent (data) {
    _root.tekstfelt1 = header;
    _root.tekstfelt2 = newsheader;
    _root.tekstfelt3 = tekstdata;
    _root.tekstfelt4 = ratings;
    _root.tekstfelt5 = diverse;
}
Avatar billede apj Nybegynder
22. marts 2004 - 14:35 #12
Damn - jeg er bange for at jeg er ude på lidt for dybt vand her...

De 5 nye tekstfelter du definerer tekstfelt1-5 har jeg ingen ide om hvad er??

--- Jeg tror det er fordi jeg slet ikke er vant til at bruge clipevent.

Kunne jeg sende dig fla'en? Det vil sikkert ikke tage dig mange sekunder at se hvor der er, men det er desværre lidt uoverskueligt for mig :(

min email er apj@nvh.dk - så hvis det er ok - kan du så ikke sende mig en email - så sender jeg fluks fla'en. :)
Avatar billede _k Nybegynder
22. marts 2004 - 15:29 #13
tekstfelt1 til 5 er bare instancenavne jeg har fundet på. Du kan kalde dem hvad det skal være....
Avatar billede apj Nybegynder
22. marts 2004 - 17:22 #14
Instance? Er det ikke navnet på et MC...eller ikke selve navnet som man skriver under F8, men man bagefter skriver ind som reference?

Hvis det er det har jeg jo som jeg skrev ovenover kun to MC - og derfor 2 instances: Loadmc og holder. Jeg har kaldt de to MCs de samme navne både under MC-navn som under instance navn.

I MCet "holder" er der 5 tekstfelter .... header, newsheader etc.

??
Avatar billede _k Nybegynder
23. marts 2004 - 08:42 #15
Et tekstfelt kan også have et instansnavn. Det mener jeg også er tilfældet i Flash 5? Kig i panelet med egenskaber for tekstfeltet. (og husk det ER "instancename" og ikke "var") du skal kigge efter.

Jeg havde overset at teksfelterne lå inde i en holder. Derfor bliver referencen til dem:
_root.holder.tekstfelt1 = header;
(husk at din "holder" også skal have instansnavnet "holder"!)

Det er nok en god ide at give dine tekstfelter et andet navn end det på variablen du henter ind i dem. Jeg ville kalde dem header_txt, newsheader_txt osv. Det er ikke alene kodemæssigt meget mere sigende, det forhindrer også at man blander de to ting sammen (med underlige konsekvenser til følge).
Avatar billede apj Nybegynder
18. august 2005 - 08:02 #16
11
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