07. november 2004 - 22:54Der er
12 kommentarer og 3 løsninger
Globale scripts i Flash
Findes der ikke et sted eller en metode hvorpå man kan anvende en slags globale scripts a la Movie Scripts i Director?
Som bekendt er det ikke alle scripts man kan have i timelinen, men det er heller ikke altid logisk at have et givent script på et bestemt movieclip i scenen.
Ofte benytter jeg den fremgangsmåde at jeg opretter en lille firkant som movieclip, og derpå smider alle de scripts der ikke passer på ét bestemt movieclip.
Dette virker dog en anelese klodset og som en hjemmelavet måde at anvende sine scripts på, er der ikke en smartere fremgangsmåde? Hvad gør I andre?
- og er der overhovedet nogen der forstår hvad jeg mener?!
mat, hvad gør du f.eks. ved de dele af scriptet der hele tiden skal udføres, altså f.eks. sætte en variabel ind i et tekstfelt for brugeren (ved godt det er et dårligt eksempel, da man lige så godt kan sætte variablen på selve tekstfeltet, men mere af princip)? En given frame i timelinen rammes jo kun en gang imellem afhængig af samlet antal frames.
Jeg er selv typen der scripter frem for at animere, så ofte har jeg ikke særlig mange frames i min film. Derfor forsøger jeg også at optimere koden bedst muligt, da det hurtigt kan blive noget rod - og i øvrigt trække hele filmen ned hvis man bare skriver uhæmmet derudaf.
i øvrigt så er _global vel ganske fin at bruge hvis man gør det til fast rutine, så er man jo altid klar over hvor man har sine variabler.
Jeg bruger selv _root foran de variabler jeg skal bruge flere steder, så jeg altid har nem adgang til dem uden at skulle "dotte" mig ind i flere lag movieclip. Så vidt jeg forstår giver _root og _global lidt det samme resultat her.
Hvis vi f.eks tager et lille spil (som som regel er det jeg vil have flest frames i (i hovedtidslinien)) så er første f.eks frame reserveret til en preloader, anden frame til et splash, tredie frame er selve spillet med al logik, fjerde er game over, femte er instruktioner og sjette er en hi score. (rækkefølgen er ikke så vigtig).
ALT andet er movieclips der kastes rundt med og med undtagelse af meget små instrukser er al kode placeret i frames i hovedtidslinien undervejs. Og de er helst placeret med reference til det instance hvor de virker logisk placeret.
Altså en preloader skal ligge i frame 1 og den tjekker main timelines loading progress, derfor vil jeg placere den i:
Vedrørende _global og _root så er det spørgsmål om god skik, og så er det jo heller ikke altid at man er den eneste der arbejder på koden, og det kunne være at din fil på et senere tidspunkt skulle ind i en anden o.s.v.?
_global er ikke det rigtige sted at placere al mulig skidt, hvis det f.eks allerede er optaget af en variabel med samme navn e.l.?
Variabler bør ligge i det scope hvor de naturligt hører hjemme og skal de tilgås af andre gør man det der.
Og relative stier er altid bedre end _root referencer.
(indrømmet jeg skriver sgu ofte bare derudaf, udfra metoden: "få det til at virke, når det gør det rydder vi op" (verdens dårligste metode, men det går stærkt.......i starten. Til sidst kan man ikke længere finde hoved og hale i det, og det breaker alle mulige steder man ikke havde regnet med )) ;)
Jo du svarer sådan set udmærket, jeg oprettede spørgsmålet for at høre hvordan andre arbejde med den slags, da jeg gerne vil optimere min arbejdsgang og gøre det på "den rigtige måde", eller den måde der virker mest logisk, som giver mindst besvær, og som optimerer hele filmen bedst.
Jeg arbejder i øvrigt selv ud fra metoden med at få det til at virke og så rydde op bagefter, det er ligesom to forskellige tankegange man benytter, så at sige. Hvis man skulle sidde og strukturere samtidig mister man hurtigt overblikket og glemmer de ting man egentlig skulle skrive.
Relative stier benytter jeg også når der skal refereres til variabler eller movieclips der ligger i samme scene, da jeg ofte scripter et modul der skal flyttes over i en anden fil og også kunne fungere der, og så er det der går rod i hierakiet hvis man benytter _root. Derimod benytter jeg _root når det er til det jeg kalder (eller definerer som) globale variabler. Og ja, så skal man passe på at det ikke kambolerer med variabler eller movieclips af samme navn.
Mht. preloader, så opretter jeg altid en selvstændig scene til denne frem for at bruge en frame i selve filmen til det. Men det er vel smag og behag, resultatet skulle gerne være det samme.
well, jeg vil nu nødig promovere "få det til at virke"-metoden, jeg har hørt det beskrevet som "kamikaze-programmering" (meget sigende)...Planlægning er altid godt, det bare ikke så sjovt :)
Man planlægger jo netop for ikke at miste overblikket.
Til gengæld er det det allerværste i verden at arbejde videre på noget eksisterende, der er dårligt (eller slet ikke er) dokumenteret. Hvis et projekt skal ses af andre end dig selv og det indeholder mere end 2 filer skal der være fildiagrammer (flowchart, klassediagrammer og the likes). Og koden skal pumpes fuld af kommentarer, så man kan se hvad hulen koderen har tænkt da han lavede det juks ;)
Det lyder som om vi kommer fra samme skole :) Var i hvert fald det jeg fik proppet ind i hovedet dengang.
Og nej, der er ikke noget værre end at overtage et projekt fra en anden som kalder sine variabler for ting som uX, S4 o. lign. og ikke kommmenterer sin kode. Modsat gør det det jo så lidt sværere for nysgerrige blikke at gennemskue.
Mht. optimering af kode og det at rydde op i den, så lavede jeg for et år eller to siden et lille bilspil, som dog aldrig blev færdigt. Spil kan man ikke engang kalde det, for der er ingen pointe i det, men man kan da køre ind i pitten og konfiguerer sin bil. Men sagen er den, at selv på en ret hurtig computer kører det rimelig trægt, nok fordi jeg i tidernes morgen bare klaskede det hele ned i et movieclip i en masse if-sætninger. Nu har jeg så besluttet mig for at kigge lidt på det igen i et forsøg på at optimere koden med bl.a. functions og måske udvikle videre på det. Det er derfor jeg forhører mig lidt om hvordan folk strukturerer deres filer for bedste resultat rent ydelelsesmæssigt og rent logisk for arbejdsgangen. Hvis det har interesse kan du se den på http://www.kreativmedie.dk/web/flashbil.html
Anyway, så ville jeg da gerne have givet lidt mere end 30 point for denne samtale, men det er jo ikke altid til at vide om man bare får et svar på to linjer. Men har da lagt mærke til at du er rimelig aktiv herinde, så lover du får nogle flere en anden gang. Smider du et svar :)
fed simpel spil, jeg kunne faktisk godt lide din lille bil, og jeg kunne godt tænke mig at lave en lille multiplay spil med de små biler, det vil være en fed spil med vennerne :)
Du kan da godt få et svar :) - det kan jo osse være der er andre der har lyst til at give deres besyv med?
Med hensyn til optimering er der altid nogle ting man kan skrive sig bag øret; pas på med gradients og alpha, lad være med at køre mange enterFrames på een gang, lad være med at lave for mange hitTests på een gang.
Der er så også mere kodespecifikke optimeringer, men det er vist helt dernede hvor hvert ryst tæller :)
Og hvis du har set nikolajs tråd om den nye flash player, der er under udvikling, så ser den ret fierce ud med hensyn til hastighed.
alaflam > I først omgang bliver det nok bare single player, multiplayer kræver vist at jeg lige får læst op på den side af det.
mat > Det var lige præcis sådan nogle småtips som gradients, alpha og enterFrame som jeg også søgte, altså i bund og grund nogle tommerfingerregler for hvordan man mest "pædagogisk" bygger sin actionscripting op.
Bare sådan noget som at bruge functions skal jeg have strammet op på. Ofte ender der med at jeg sidder med en stor bunke if-sætninger o. lign.
Ja, jeg har godt set den nye Flash Player. Jeg fik linket af en ven, men går ud fra det er den samme som den fra nikolajs tråd. Og ja, den ser ret hurtig ud, og også ret kraftfuld med animerede real-time effekter som blur og drop shadow!
Synes godt om
Ny brugerNybegynder
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.