simpel navigation i forbindelse med en opgavepræsentation???
Hej Eksperter, Jeg har lavet en illustreret opgave i flash istedet for at bruge powerpoint...Jeg vil gerne kunne gå frem og tilbage i filen som jeg ønsker..Til at starte med skal der ikke være nogen visuel navigation. Jeg skal bare kunne trykke på space, og filmen stopper, og næste gang jeg trykker space, så fortsætter den, hvor den slap.. , Hvis det er muligt skal jeg kunne springe rundt i de forskellige labels, ved at trykke højre og venstre pil ned.. Jeg har bygget filen op således at jeg har en lille intro i starten, derefter ligger de forskellige MC's under hver sin label... 01,02,03 etc..
Det virker som et meget banalt spørgsmål, men jeg håber I kan hjælpe.... Please...
Hvis du bruger den nye Flash MX, skal er der allerede en skabelon til den slags præsentationer, du taler om (Det er vel Macromedias forsøg på at 'hugge' powerpoint-kunder) - og det er meget nemt at gå til. :o) Du skal vælge 'new from template'->'presentation' og så vælge hvilket grundlayout, du vil have. Der er wizard med til, hvordan du smækker dine billeder, mc's etc ind - og det er faktisk ret nemt. Så hvis du ikke har Flash MX, foreslår jeg dig, at du downloader macromedia's trial-version, der er fuldt funktionsdygtig i (vistnok) 30 dage. Lav din opgave deri.
Lav et movieclip, der er tomt, eller blot indeholder en figur, som du placerer udenfor scenen. skriv denne kode:
onClipEvent(load) { film=1; //dvs. Filmen kører }
onClipEvent(enterFrame) { if(film=0) { //Hvis filmen ikke kører if(Key.isDown(key.SPACE)) { //Og hvis man trykker space _root.play(); //Skal filmen køre. film=1; //Filmen kører } } else if(film=1) { //Men hvis filmen kører if(Key.isDown(key.SPACE)) { //Og man trykker SPACE _root.stop(); //Skal filmen stoppe film=0; //Filmen er stoppet } } }
-Så skulle den gerne stoppe og starte med SPACE-tasten (o;
Hej Legende. Jeg har brugt dit script, men det virker ikke optimalt, når jeg trykker på space mens filem kører, er det som om den ikke helt forstår at den skal stoppe konsekvent, nogle gange stopper den, andre gange ikke,....Måske er det fordi det er (enterframe), og da det er en lang movie, som kører i 50 fps kan det være den ikke helt når at registrere scriptet korrekt hver gang...????? Hva' siger du ?
onClipEvent(load) { film=1; //dvs. Filmen kører }
onClipEvent(enterFrame) { if(film==0) { //Hvis filmen ikke kører if(Key.isDown(key.SPACE)) { //Og hvis man trykker space _root.play(); //Skal filmen køre. film=1; //Filmen kører } } else if(film==1) { //Men hvis filmen kører if(Key.isDown(key.SPACE)) { //Og man trykker SPACE _root.stop(); //Skal filmen stoppe film=0; //Filmen er stoppet } } }
onClipEvent(keyUp) { if(Key.getCode() == key.SPACE) { film = !film; if (film) { _root.play(); } else { _root.stop(); } } }
Den registrerer på hvert eneste "keyUp" istedet... Og kun én gang på hvert keyUp... Den anden registrerede, om knappen var nede på hver enterFrame, og med mindre man holdt den nede mindre end 2/100 sekund, så registredes dette over flere enterFrame's, der både startede og stoppede filmen...
Hej Barklund, Det er en super god ide, og den virker,... Lige indtil at min film kommer til de forskellige movie clips, som jeg har lagt under diverse labels, problemet er at de har hver deres egen tidslinie, og scriptet referere kun til _root. Hvad kan jeg gøre for at scriptet både referere til _root, og de respektive movieclips...Således at HELE filmen reagerer ved key.SPACE. ??????
det kan man ikke, for hvordan skal scriptet kunne gætte, hvilken af dine tidslinier, som skal køres, og hvilke der ikke skal køres... Hvis alt skal køre samtidig, og dine movieclips med grafik skal stoppe, når hovedfilmen stopper, så lav dem om til symbol-type "graphic" i stedet...
Okay så vidt jeg forstår, så mener du at hovedtidslinien (_root) står stille når graphic symbolerne spiller, hvilket jo er rigtigt, jeg har lavet en stop action på samme frame hvor movieclippet ligger. Problemet er, at mine movieclips ikke vil spille når jeg har lavet dem om til graphic symboler ??? hvordan kan det være ???
som jeg siger... modsat det du siger... graphics følger ikke længere deres egen tidslinie med tidslinien over dem... Du er nødt til at indsætte lige samme mange ekstra frames i din _root, som dine graphics er lange... ellers virker det ikke...
selvfølgelig... hvis du har styr på dem alle sammen... Men de steder, hvor hovedfilmen står stille og dine movieclips skal spille, så skal hovedfilmen jo ikke startes igen bagefter, vel?
Men vil du gerne gå denne vej, så kan vi lave en lille funktion, der tillader et movieclip at "abonnere" på denne start-stop-funktion - og også at afmeld sit "abonnement". Scriptet herunder skal tilføjes i første frame af din _root.
tilmeldte = new Array(); Array.prototype.find = function(key) { for (i in this) { if (this[i] == key) return i; } return -1; } function tilmeld(mc) { if (tilmeldte.find(mc) == -1) tilmeldte.push(mc); } function afmeld(mc) { if ((p=tilmeldte.find(mc)) != -1) tilmeldte.slice(p,1); }
Dit script på din knap er så:
onClipEvent(keyUp) { if(Key.getCode() == key.SPACE) { film = !film; var fun = film ? "play" : "stop"; for (i in _root.tilmeldte) _root.tilmeldte[i][fun](); } }
Når du så stopper din hovedfilm og tilføjer nogle movieclips i stedet, så skriver du i hovedfilmens stop-frame:
stop(); _root.afmeld(_root);
På din mc's tilføjer du:
onClipEvent(load) { _root.tilmeld(this); }
I sidste frame af dine mc's, hvor du vel også har en _root.play(), for at _root kommer videre, der tilføjer du:
Den var da ganske ligetil at tænke... Hvodden skulle det ellers laves? Spørgeren er nok gået i seng ligesom vi andre burde...
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.