20. december 2005 - 01:44Der er
15 kommentarer og 1 løsning
Skifte mange instances på een gang
Hej med jer,
Jeg sidder og har lavet et fint movieclip (ACTION1) med en fin tween henover omkring 1000 frames. Der er super duper mange keyframes, og nu vil jeg gerne kopiere mit fine movieclip til ACTION2 og derefter skifte et af movieclipsne ud derinde (så det er FIGUR2 der optræder istedet for FIGUR1).
Jeg kender godt "swap" funktionen, men den tager kun én instance ad gangen. Jeg vil sådan set gerne swappe alle instances på en timeline i et movieclip ud med et andet.
Kan det lade sig gøre? Hvis da, hvorledes?
Det vil være fint hvis det er uden actionscript...
Først skal du oprette en ny fil - en Flash JavaScript-fil (som det hedder i "ny fil" menuen).
I denne indsætter du:
var d = fl.getDocumentDOM(); var t = d.getTimeline(); var l = t.currentLayer; for (var i = 0; i < t.layers[l].frames.length; i++) { if (t.layers[l].frames[i].startFrame == i && t.layers[l].frames[i].elements.length == 1 && t.layers[l].frames[i].elements[0].elementType == "instance") { t.currentFrame = i; t.layers[l].frames[i].elements[0].selected = true; d.swapElement("Element 2"); t.layers[l].frames[i].elements[0].selected = false; } }
(erstat "Element 2" med navnet på det andet symbol)
Dette script gemmer du så som et JSFL-script i en sti omkring:
c:\Documents and Settings\{username}\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Commands\Swap Element.jsfl (til Flash 8)
Derefter markerer du laget i tidslinjen, så kan du gå op i Commands-menuen, og her skulle der gerne på magisk være et "Swap element"-menupunkt (som er den fil, du lige har lavet). Kør denne og voila :)
var d = fl.getDocumentDOM(); var t = d.getTimeline(); var l = t.currentLayer; var f, e; for (var i = 0; i < t.layers[l].frames.length; i++) { f = t.layers[l].frames[i]; e = f.elements; if (f.startFrame == i && e.length == 1 && e[0].elementType == "instance") { t.currentFrame = i; e[0].selected = true; d.swapElement("Element 1"); e[0].selected = false; } }
Og hvis du vil have det forklaret så sig til - men det er nu ganske ligetil og JSFL-manualen er meget udførlig :)
Alt hvad du kan gøre i Flash, kan du scripte! Frames, layers, symboler i library - alt! Det er superfedt. Jeg har lavet scripts, der oprette hundredevis af movieclips ud fra nogle timelines, hvor grafikerne sætter grafik ind til nogle animationer - som jeg derefter med et script på få sekunder klipper i stykker til præcis det formål, jeg ønsker.
Kig i Flash 8 manualen under Extending - det er et meget omfattende sprog. Man kan lave sine egne små scripts til at gøre ting, sine egne tools til at tegne hvad som helst med, samt sine egne paneler.
7'eren kan det samme (hvis det er pro) på næsten alle punkter. Sproget er dog udvidet en del i 8'eren, men du kan også lave paneler med videre til 7. Manualen er bare ikke så omfattende i 7'eren, men noget er der selvfølgelig.
Det lyder altså ikke yderligere simpelt. Man kan ikke kode AS2 i det (heller ikke AS), for det prøvede jeg, men jeg tror ikke helt, jeg ved hvad man skal bruge det til...
Kan du give et eksempel, på noget, som ville være utrolig meget nemmere med dit nye JavaScript Flash-ting, end i Flash?
* Du har lavet en hel masse symboler i dit library, der er movieclips med en klasse tilføjet, du skal have ændret klassestien, da du har flyttet din klasser til en ny pakkestruktur.
* Du kan løbe almindelige filer på computeren igennem. For eksempel er jeg begyndt på et script, der løber alle .as-filer igennem og tilføjer ASDoc-syntaks rundt om alle metoder med mere i mine klasser.
* Du kan tilgå tidslinjen og flytte frames, indhold, kopiere hvad som helst, tilføje tint til alt, lave alle symboler til movieclips, ...
Nej, det er ikke ActionScript - det er JavaScript og kun omkring JS1.2 (og har altså ikke fasttypning). Det er et andet sprog, nogle andre objekter (der er for eksempel ikke noget MovieClip objekt, men der er selvfølgelig string, number, array, ...), og nogle helt andre funktioner - men det skal jo også bruges til noget helt andet.
Det er primært til kedelige gentagelsesopgaver eller til mere komplicerede ting - eller ting, der skal være helt ens hver gang og gentages ofte. Jeg har også et lille script til at opdatere min FLP-fil, så mit Flash Project altid er up-to-date med alle klassefiler i mapperne.
Hvis du ikke ser behovet for det og kun laver mindre ting, du ikke finder tidskrævende og irriterende, så er JSFL ligemeget. Men bruger du Flash fuld tid og professionelt, så bliver JSFL hurtigt en gevinst. :)
Det er meget pædagogisk forklaret, så selv en designer kan finde rundt i det, og du introducerer også en helt ny verden af muligheder. Det er smukt, du må ha' fler point !
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.