Play videoer i Sequence bruk Flash
Del
Del
en
Del
Dette Cyber mandag Envato Tuts + Kursene vil bli redusert til bare $ 3. Ikke gå glipp av.
Det er en altfor velkjent forekomst. Du klikker på en link for å se en video og i stedet nødt til å sitte gjennom en 15 sekunders annonse før videoen spilles av. Selv om dette er et ekstremt eksempel på hvordan man spiller en videosekvens teknikken er nøyaktig den samme.
I denne tut, jeg skal vise deg en metode for å spille sekvensiell video gjennom en video objekt og gjennom FLVPlayback komponent i Flash.
For å komme i gang jeg har tatt med 3 TV-annonser (FLV-format) fra de tidlige dagene av TV . Disse annonsene, fra Prelinger Archives er ca 1 minutt i lengde og vil spille den ene etter den andre. Last ned filene og la oss komme i gang:
Trinn 1: Nytt dokument
Åpne en ny Flash Actionscript 3.0 dokument. Når filen åpnes legge et nytt lag og gi den navnet "tiltak". Lås «handlinger» lag
Trinn 2:. Video Object
Legg til en Video Object til biblioteket. Nå velger "Ny Video" fra Biblioteket Pop-opp menyen. Når videoegenskaper dialogboksen åpnes, sørg for at "Video (Action -kontrollerte)" er valgt, og klikk OK. Når dialogboksen lukkes, vil du se en video objekt (det ser ut som et videokamera) i biblioteket
Trinn 3:. Legg til Stage
Legg Video Object til scenen, deretter med Video Object valgt, klikk på fanen egenskaper og angi størrelsen på objektet til 320 piksler bred og 240 piksler høy. I tillegg, i eiendommen Inspector, gi den valgte videoen protestere forekomsten navnet "MyVideo".
Før vi kommer inn koden la oss ta et øyeblikk å tenke på hva som må gjøres. First off er det tre FLV filer som skal spilles gjennom Video Object (MyVideo) på scenen. Somehow, er Flash kommer til å trenge å bli fortalt hvilke videoer vil spilt og i hvilken rekkefølge.
Det neste Flash trenger å gjøre er å signalet opp neste videoen i oppstillingen. Dette forteller deg at du trenger å holde et øye med hvor mye tid som gjenstår i videoen som spilles. . Når den treffer til slutt, eller nær det, må du tømme den ut av strømmen, stå i kø den neste i utvalg og få det spiller
Her er hvordan du gjør det:
Trinn 4: ActionsScript
Legg følgende Action:
import flash.events.NetStatusEvent; Var videoer: Array = new Array ("Ad01.flv", "Ad02.flv", "Ad03 .flv "); Var currentVideo: uint = 0; Var varighet: uint = 0; Var klar: Boolean = true;
Nøkkelen til hele denne øvelsen er å vente på en video til slutt da kø den neste til å spille . Denne typen ting er knyttet til en hendelse som er utløst av videoen som spilles på Netstream. Det første kodelinje er derfor vi importere NetStatusEvent Den neste kodelinje kaster FLV filer som skal spilles inn i en liste. Husk rekkefølgen av videoene i denne listen vil være deres avspillingsrekkefølgen. Mens vi er på temaet en liste: "Ja dette kan gjøres ved hjelp av et XML-dokument i stedet for hardt ledningsnett videoene inn i swf". I dette eksempelet har vi bare tre videoer, så håndtere dem ved hjelp av en ekstern XML-dokument er egentlig ikke nødvendig. Hvor et XML-dokument er avgjørende ville være de situasjoner hvor nye videoer blir stadig roterte gjennom linjen opp eller hvor en hel serie med videoer, la oss si 10 for argumentet skyld, har til å bli spilt i en bestemt rekkefølge. De neste to linjene bruke uint Den siste linjen setter en boolsk Skriv inn følgende Action: Dette er standard koden som brukes for å få en video til å spille gjennom en Video Object. De to første linjene etablere et NetConnection Hotell og null Det neste kodeblokken skaper et Netstream Skriv inn følgende Action: Vi starter ved hjelp av en lytter å fortelle Flash for å holde et øye med hva som skjer mens FLV spiller. Hva Flash lytter etter er en NetStatusEvent Hotell og disse hendelsene er vanligvis sendes når videoen gjør noe som start, stopp og så videre. Når dette skjer nsHandler nsHandler Husk at klar Dermed balansen i kodeblokken begynner å komme i fokus. Hvis gjeldende tid på strømmen er et sted mellom 59,5 og 60 sekunder, er videoen som spilles ignorert - klar = false Anmeldelser - og neste video på listen - currentVideo ++ Anmeldelser - blir dratt inn i besetningen. Selvfølgelig, før den begynner å spille, det er behov for å bevise det hører hjemme i besetningen. Dette gjøres ved å sjekke den mot sin posisjon i rekken - currentVideo < videos.length Anmeldelser - og om sin identitet passerer gransking, er det lagt til strømmen og spilte Lagre filmen til nedlastingsmappen inneholder. FLV og teste filmen. Hei! Hva om FLVPlayback komponent? Glad du spurte. Her er hvordan du gjør det samme med FLVPlayback komponent: Åpne en ny Flash Actionscript 3.0 dokument. Når dokumentet åpner legge et nytt lag til tidslinjen og nevne dette laget "tiltak". Lås handlinger lag. Velg Egenskaper-paneler og sette dimensjoner til 320 av 240. Neste gi komponenten forekomsten navnet MyVideo Dette kan gjøres ved å velge komponenten på scenen og går Vindu > Component Inspector Legg til følgende Action: Vi starter med å lage den Array Hotell og med currentVideo Den tredje linjen er valgfritt, men svarer på et "Hvordan gjør de det?" spørsmål jeg ofte spurt. Har du lagt merke til hvordan, når du treffer et nettsted der videoene er klammen av annonser, som du ikke kan få på kontrollene for å hoppe over annonsen? Denne linjen er hvordan det gjøres. Det rett og slett deaktiverer alle knappene i komponentens huden Den første funksjonen -. playCurrentVideo () Anmeldelser - holder kilden tilhører komponentens eksempel nåværende og spiller video Lagre prosjektet til samme mappe som FLV og teste filmen I denne opplæringen jeg har vist deg hvordan du skal spille en sekvens av videoer ved hjelp av enten en Video Object fra biblioteket eller en FLVPlayback komponent. Du nå forstår hvordan du oppretter en spilleliste, og har den listen spille i den rekkefølgen etablert. Du har også sett hvordan du deaktiverer kontrollene komponenten huden for å hindre brukere fra å endre volumet, hoppe gjennom video eller sette den på pause første videoen i besetningen. Jeg håper du fant det nyttig, takk for lesing.
klasse fra import flash.events
pakken.
klasse å sikre at vi alltid arbeider med et positivt tall når det refereres til en video i listen eller lengden på dens varighet.
variabel til sant
. Vi skal bruke det svært kort tid
Trinn 5: Mer Action
Var nc. NetConnection = new NetConnection (); nc.connect (null); Var ns: Netstream = new Netstream (nc); myVideo.attachNetStream (ns); ns.play (videoer [currentVideo]); Var lytteren: Object = new Object (); listener.onMetaData = function (evt: Object): void {varighet = evt.duration; klar = true; }; ns.client = lytteren;
parameter i den andre linjen forteller Flash disse videoene skal spilles med en progressiv nedlasting i stedet streames via en Flash Media Server. Anmeldelser
protestere og sender den på NetConnection Anmeldelser parameter - nc. Derfra blir Netstream mates inn i video objekt som heter MyVideo Hotell og Flash, gjennom play ()
metoden blir fortalt hvilken video til å spille i videoen objektet.
< p> Lytteren eneste funksjon er å tilbakestille klar verdien til sant
. Stå på, ikke vi bare gjøre det med variabel i linje 5? Ja vi gjorde, men følgende kode blokken gjør årsaken til dette null mye klarere
Trinn 6:. Hør
ns.addEventListener (NetStatusEvent.NET_STATUS , nsHandler), funksjon nsHandler (evt: NetStatusEvent): void {if (klar & & ns.time > 0 & & ns.time > = (varighet - 0,5)) {klar = false; currentVideo ++; if (currentVideo < videos.length) {ns.play (videoer [currentVideo]); } Else {ns.removeEventListener (NetStatusEvent.NET_STATUS, nsHandler); }}};
funksjonen er avfyrt.
funksjonen er der magien skjer i dette prosjektet. NetStatusEvent
kjører hele tiden, og en av de tingene som blir sjekket er gjeldende tid i videoen. Hver video i dette prosjektet er ca 60 sekunder i varighet. I dette tilfellet ønsker vi å være sikker på det nåværende tidspunkt er et sted mellom 0 og 60 sekunder. Hvis det er, er funksjonen ignorert ... slags.
variabel i metadata handler? En NET_STATUS
hendelse er avfyrt mye mer enn når slutten av videoen er nådd. klar
variabel sikrer funksjonen gjør bare sin ting én gang. Hvis det ikke er det en god sjanse det ville stadig hoppe til neste video i besetningen fordi de to betingelser er oppfylt. Dette ville ikke være en god ting som er grunnen, når de første tre forhold - klar, er det nåværende tidspunkt større enn 0 og større enn eller lik videoens varighet - er oppfylt klar verdien er satt til false
. er reset klar
verdien til sant
, takket være onMetadata
handler, bare når de neste videoen laster.
Trinn 7: Lagre og Test
Trinn 8: Nytt dokument
Trinn 9: FLVPlayback Component
Trinn 10 Legg en FLVPlayback komponent til scenen. Resize Komponent
. Normalt ville du ikke manuelt endre størrelsen komponenten fordi komponenten er dimensjonert til videoens dimensjoner når man er valgt i Component Inspektør. I vårt tilfelle hele greia vil bli drevet av Actionscript, så du trenger å gjøre dette
Trinn 11:. Legg en Skin
Trinn 12:. Action
Var videoer: Array = new Array ("Ad01.flv", "Ad02.flv", "Ad03. flv "); Var currentVideo: uint = 0; myVideo.mouseChildren = false; funksjon playCurrentVideo (): void {myVideo.source = videoer [currentVideo]; myVideo.play (); } PlayCurrentVideo (); myVideo.addEventListener (Event.COMPLETE, completeHandler); funksjon completeHandler (evt: Hendelses): void {currentVideo ++; if (currentVideo > 0) {myVideo.mouseChildren = true; } If (currentVideo < videos.length) {playCurrentVideo (); }}
variabel for å holde orden på hvilke video i listen spilles.
<. p> completeHandler ()
ser merkelig kjent. I tilfelle av FLVPlayback komponent det er ingen NET_STATUS
hendelser å bekymre seg. Den eneste hendelsen for å se er COMPLETE
hendelsen sparken når komponenten treffer slutten av videoen. Når denne hendelsen er oppdaget neste video i rekken er rykket inn i kalenderen og avspillingskontrollene er frosset. Dette skjer bare hvis video kan bevise det er et medlem av tabellen og har ikke blitt spilt allerede
Trinn 13:. Lagre og Test
Konklusjon:.