Avatar billede paal_dk Nybegynder
15. august 2005 - 23:25 Der er 7 kommentarer

TextField constructor eventlistener

Hejsa,
Jeg vil gerne kunne detecte hver gang et nyt tekstfelt bliver renderet på scenen i en keyframe via en form for listener.

En onEnterFrame scanning efter nye instanser af typen TextField er umiddelbart ikke interessant, men jeg tænkte på om man kunne redefinere TextField klassens constructor på nogen måde?


Håber i kan hjælpe,
Pål
Avatar billede jakwag Nybegynder
16. august 2005 - 15:19 #1
Hej

Det er da vist lidt tricky, det du er ude i der. Hvad skal du bruge det til? Ville det måske kunne løses ved lave en ny function til at lave textFields med?

: ) Jakob
Avatar billede paal_dk Nybegynder
16. august 2005 - 17:18 #2
Det skal bruges til at sætte indholdet af tekstfeltet ud fra enten dets instansnavn, dets varnavn eller den tekst der er sat i det på designtidspunktet (lige meget hvad for en parameter). Det er designere der placerer tekstfelterne og de har brug for layoute med WYSIWYG funktionalitet, så der er ikke mulighed for at generere tekstfelterne med kode.

Idéen er at programmet så at sige skal kunne interagere dynamisk med et design og struktur som på forhånd ikke er kendt og placere content i det på kørselstidspunktet.
Det er vigtigt at det er flash' egne tekstfelter og ikke en hjemmelavet komponent fordi udviklingstiden for en livepreview component (authormode WYSIWYG) med samme antal parametre som et tekstfelt er ret lang, og de fungerer ikke optimalt...

:) Pål
Avatar billede jakwag Nybegynder
17. august 2005 - 11:21 #3
hhmm.. Nej, det kan jeg godt se. Det lyder ret umuligt uden at loope igennem de objekter der er der. Du taler om dynamiske tekstfelter, right? Ellers kan man ihvert fald ikke.

Tygger lidt på den...

: ) Jakob
Avatar billede paal_dk Nybegynder
17. august 2005 - 13:11 #4
Jo det er dynamiske tekstfelter, og man kan godt loope sig igennem men i udgangspunktet er det for CPU krævende fordi det er hver eneste frame.
Avatar billede jakwag Nybegynder
17. august 2005 - 13:18 #5
nå, jeg har siddet og kigget lidt på det, men jeg kan ikke finde en måde at gøre det på. Meget interesant spm ellers. Sig til hvis du finder en løsning.

: ) Jakob
Avatar billede paal_dk Nybegynder
17. august 2005 - 13:48 #6
Jeg har tre løsningsforslag hvis der ikke er nogen elegant måde at gøre det på:

1. et JSFL script der køres inden export, som indsætter AS-kode i den keyframe tekstfelter er i. JSFL fungerer ikke ordentligt hvis der er "groups" i en flashfil, og det derfor er en kilde til fejl som er svære at finde.

2. Et movieclip/komponent der skal hives med ind i på scenen sammen med hvert tekstfelt. Desværre er det fejlbehæftet fordi det kan blive glemt.

3. En getter funktion i _global.myvar der bliver kaldt fra alle tekstfelter (fordi deres varfelt refererer til _global.myvar. Funktionen scanner scenen for tekstfelter. Tekstfelter bliver gemt i en tabel og efter første gennemløb har man deres placering og frame nummer (hovedtidslinje) cachet for fremtiden. Når man efterfølgende kalder _global.myvar, kan man nøjes med at initialisere de tekstfelter der er registreret under _currentframe. Hvis de ikke findes på scenen (fordi de ligger i et underclip længere henne ad tidslinjen), springes de bare over. Håber det var tydeligt nok.

:) Pål
Avatar billede jakwag Nybegynder
17. august 2005 - 13:54 #7
synes selv bedst om din løsning 3, men kan som sagt ikke selv komme op med noget bedre :)
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