Spill av videoer i Sequence Bruke Flash

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
klasse fra import flash.events
pakken.

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
klasse å sikre at vi alltid arbeider med et positivt tall når det refereres til en video i listen eller lengden på dens varighet.

Den siste linjen setter en boolsk
variabel til sant
. Vi skal bruke det svært kort tid

Trinn 5: Mer Action

Skriv inn følgende 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;

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
parameter i den andre linjen forteller Flash disse videoene skal spilles med en progressiv nedlasting i stedet streames via en Flash Media Server. Anmeldelser

Det neste kodeblokken skaper et Netstream
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

Skriv inn følgende Action:
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); }}};

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
funksjonen er avfyrt.

nsHandler
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.

Husk at klar
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.

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

Trinn 7: Lagre og Test

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:

Trinn 8: Nytt dokument

Å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.

Trinn 9: FLVPlayback Component



Trinn 10 Legg en FLVPlayback komponent til scenen. Resize Komponent

Velg Egenskaper-paneler og sette dimensjoner til 320 av 240. Neste gi komponenten forekomsten navnet MyVideo
. 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

Dette kan gjøres ved å velge komponenten på scenen og går Vindu > Component Inspector

Trinn 12:. Action

Legg til følgende 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 (); }}

Vi starter med å lage den Array Hotell og med currentVideo
variabel for å holde orden på hvilke video i listen spilles.

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
<. 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

Lagre prosjektet til samme mappe som FLV og teste filmen

Konklusjon:.

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.