SEMINARSKI RAD IZ MULTIMEDIJE |
||||||||||||||||||||
|
Virtuelna multimedijalna bibliotekaPregled osnovnih koncepata i ideja koji se nalaze u aplikacijiProjektovali smo i implementirali aplikaciju u Director-u 2004 koja ima funkciju multimedijalne biblioteke. Podržava rad sa audio i video fajlovima, slikama, te rad sa DVD-ovima. Podržana je većina dostupnih formata fajlova, njihova katalogizacija (osim u radu sa DVD-ovima gdje ona i nema smisla), kao i njihovo reprodukovanje. Korišten je programski jezik Lingo, a osnovne skriptove ćemo predstaviti u daljnjem izlaganju. Storyboards kojima su opisani osnovni dijelovi (ekrani) aplikacije uz naznaku dinamike i interakcija
Početni ekran naše aplikacije izgleda ovako:
Iako je intuitivno sve jasno, slijedi kratko objašnjenje: Nota – otvaranje opcije za audio fajlove Kamera – otvaranje opcije za video fajlove Aparat – otvaranje opcije za slike DVD – otvaranje opcije za reprodukovanje DVD-ova
Klikom na jednu od ove četiri opcije dobijaju se sljedeći ekrani:
Opcijama “+“ i “-“ dodajemo i uklanjamo fajlove iz liste. Za audio i video fajlove imamo opcije play, pause, stop, rewind i next. Strelice prema gore i dole omogućavaju pojačavanje, odnosno smanjivanje tona. Za slike opcija X omogućava pregled slike, a ista opcija uklanja otvorenu sliku i vraća sliku na gore prikazani ekran. Kod opcije za reprodukovanje DVD-ova bitno je samo pravilno unijeti slovo drive-a sa koga se učitava DVD. Ostalo radi naš program.
Detaljniji opis navigacije korisnika po dijelovima aplikacije
Za selekciju fajlova koristi se dugme “+” koje nam omogućava otvaranje prozora za kretanje po fajl sistemu. Korisnik samo treba da odabere fajl koji želi da upiše u bibioteku i njegova apsolutna putanja se automatski učitava u jedan od tri tekstualna fajla (audio.txt, video.txt, slike.txt) koji se nalaze u istom direktorijumu kao i aplikacija.
Međutim, u listu, radi bolje preglednosti, se upisuje samo ime fajla. To smo postigli sljedećom funkcijom: on parsirajPutanju(punaPutanja) repeat while punaPutanja contains "\" pojava=offset("\",punaPutanja) punaPutanja=chars(punaPutanja,pojava+1,punaPutanja.length+1) end repeat return punaPutanja end
Za vrijeme reprodukcije videa on se raširi preko cijelog ekrana, a korisniku iznad videa ostaju omogućene sve opcije. Dugme play je onemogućeno za vrijeme prikazivanja videa da se korisniku ne ostavi mogućnost da ponovo pokrene isti filmić preko trenutno prikazivanog.
U meniju za slike klikom na X se otvara selektovana slika. Slika se prikazuje u svojoj veličini ako je manja od 600x400, a ako nije smanjuje se na prethodne dimenzije da bi stala na ekran aplikacije.
à
Podržani formati, po kategorijama:
Svi video formati su podržani kao #windowsMedia.
U ovom slučaju svi podržani formati su tipa #sound.
ImplementacijaCast Window:
Osim već pomenutih ikona, uočavaju se i slova koja u animaciji „dolijeću“ na svoje mjesto kad se izabere jedna od četiri opcije. Sa njima se pojavljuju i relevantne kontrole za određenu akciju, npr. play i stop za audio i video ili krstić za slike. Primjetan je veliki broj skriptova, tako da ćemo obratiti pažnju samo na osnovne. Za prikazivanje prelaza postoje četiri bitna momenta u kojima su svi Keyframeovi složeni jedan ispod drugog – to su frame-ovi sa brojevima 1, 48, 92, 125, 180. To su statični ekrani i u njima se poziva _movie.go(_movie.frame) dok god se iz “menija” ne izabere nešto drugo čime se aktivira određeni “flag”. U tim frame-ovima se događa glavna radnja. Pri prelazu se pozove samo jedna funkcija: _movie.go(_movie.frame+1) čime se nastavlja animacija. Nailazi se uvijek na isti script (broj 36) koji zapravo odlučuje kuda dalje:
on exitFrame me if(filmFlag=true) then member("List_film").labels=ListaVideo_lb member("List_film").data=ListaVideo _movie.go("FilmMarker") else if (muzikaFlag=true) then member("List_muzika").labels=ListaAudio_lb member("List_muzika").data=ListaAudio _movie.go("MuzikaMarker") else if(dvdFlag=true) then _movie.go("DVDMarker") else member("List_slike").labels=ListaSlike_lb member("List_slike").data=ListaSlike _movie.go("slikeMarker") end if end
Na osnovu četiri “flaga” (muzika, film, slike, dvd) se prelazi na jedan od četiri markera, i tako ukrug. Dolazi se do animacije kojom elementi (play,stop...) ulaze na ekran, i onda se opet dodje do _movie.go(_movie.frame). Pritiskom na bilo koji stop očiste se svi cast memberi. Funkcijom prepareMovie() se postavlja veličina pozornice, boje pozadina za različite dijelove aplikacije i učitavaju podaci iz već pomenutih fajlova – audio.txt, slike.txt i video.txt. Navedeni fajlovi se otvaraju, čitaju i parsiraju putanje fajlova, te učitavaju u liste za katalogizaciju. Svi flag-ovi se postavljaju na false: on prepareMovie() _movie.stage.rect=rect(0,0,600,400) ListaAudio=[] ListaAudio_lb=[] ListaVideo_lb=[] ListaVideo=[] ListaSlike=[] ListaSlike_lb=[] _movie.stage.resizable=false bojaCrvena=rgb("#FF6666") bojaPlava=rgb("#B3CBFF") bojaZuta=rgb("#FFE791") bojaTamnoCrvena=rgb("#D90000") bojaZelena=rgb("#CCFFFF") bojaSvijetloCrvena=rgb("#FFAAAC") member("Pozadina").fillColor=bojaZelena fajl=new xtra("fileio") fajl.openFile("C:\mms\video.txt",1) tekstFajla=fajl.readFile() if(tekstFajla<>"") then ListaVideo=value(tekstFajla) end if repeat with i=1 to ListaVideo.count ListaVideo_lb.add(parsirajPutanju(ListaVideo[i])) end repeat fajl.closeFile() fajl.openFile("C:\mms\audio.txt",1) tekstFajla=fajl.readFile() ListaAudio=value(tekstFajla) repeat with i=1 to ListaAudio.count ListaAudio_lb.add(parsirajPutanju(ListaAudio[i])) end repeat fajl.closeFile() fajl.openFile("C:\mms\slike.txt",1) tekstFajla=fajl.readFile() ListaSlike=value(tekstFajla) repeat with i=1 to ListaSlike.count ListaSlike_lb.add(parsirajPutanju(ListaSlike[i])) end repeat fajl.closeFile() slikeFlag=false filmFlag=false muzikaFlag=false dvdFlag=false dvdPaused=false slikeAktivne=false audioPlaying=false videoPlaying=false videoPaused=false audioPaused=false dvdPlaying=false chapter=1 end Sljedeće dvije male, ali korisne funkcije su nam omogućile da se ikona na kojoj je pointer miša malo poveća, a sa njegovim odlaskom vrati na normalnu veličinu. Dosta često su korištene u mnogim skriptovima:
on mouseEnter() _movie.sprite(4).width=_movie.sprite(4).width+10 _movie.sprite(4).height=_movie.sprite(4).height+10 end mouseEnter
on mouseLeave() _movie.sprite(4).width=_movie.sprite(4).width-10 _movie.sprite(4).height=_movie.sprite(4).height-10 end mouseLeave Sljedeća funkcija omogućava izvršavanje audio i video fajlova, a pridružena je skriptu koji odgovara cast member-u play. Veoma slično su ostvarene i funkcije pause, stop, rewind… Najbitnije je da se ispita koji je “flag” postavljen, na osnovu toga onemoguće ostali i omogući pokretanje pomoću određenog kanala za taj medij: on mouseUp me if(muzikaFlag=true) then if(audioPlaying=true) then sound(1).stop() zvucniFajl=VOID if(not voidP(sprite(9).getSelectedIndex())) then audioPlaying=true izbor=integer(_movie.sprite(9).selectedIndex) nazivFajla=ListaAudio.getAt(izbor+1) if(nazivFajla contains ".rm") then zvucniFajl=_movie.newMember(#realMedia) else if(nazivFajla contains ".wma") then zvucniFajl=_movie.newMember(#windowsMedia) else zvucniFajl=_movie.newMember(#sound) end if zvucniFajl.fileName=nazivFajla sound(1).play(zvucniFajl) end if else if(audioPaused=true) then sound(1).play() audioPaused=false audioPlaying=true else if(audioPlaying=false and audioPaused=false) then if(not voidP(sprite(9).getSelectedIndex())) then audioPlaying=true izbor=integer(sprite(9).selectedIndex) nazivFajla=ListaAudio.getAt(izbor+1) if(nazivFajla contains ".rm") then zvucniFajl=_movie.newMember(#realMedia) else if(nazivFajla contains ".wma") then zvucniFajl=_movie.newMember(#windowsMedia) else zvucniFajl=_movie.newMember(#sound) end if
zvucniFajl.fileName=nazivFajla sound(1).play(zvucniFajl) end if end if
-- ako se koristi film else if(filmFlag=true) then if(videoPlaying=false and videoPaused=false) then if(not voidP(sprite(9).getSelectedIndex())) then videoPlaying=true izbor=integer(sprite(9).selectedIndex) nazivFajla=ListaVideo.getAt(izbor+1) if(nazivFajla contains ".rm") then videoFajl=_movie.newMember(#realMedia) else videoFajl=_movie.newMember(#windowsMedia) end if videoFajl.fileName=nazivFajla channel(30).makeScriptedSprite(videoFajl)
-- postavljanje dimenzija _movie.stage.rect=rect(0,0,800,600) channel(30).sprite.rect=rect(0,40,800,600) -- postavljanje dimenzija channel(30).sprite.play() end if else if(videoPaused=true) then videoPaused=false channel(30).sprite.play() else if(videoPlaying=true) then nothing end if end if sprite(16).color=bojaTamnoCrvena sprite(18).color=bojaCrvena sprite(17).color=bojaCrvena sprite(19).color=bojaCrvena sprite(20).color=bojaCrvena end Sljedeća funkcija omogućava pojačavanje tona za audio i video fajlove, te DVD-ove pritiskom na dugme “pojačaj” koje je predstavljeno strelicom prema gore, a koje se pojavi ulaskom u jednu od prethodno navedene tri opcije. Funkcija za smanjivanje je potpuno analogna. on mouseUp me if(dvdFlag=true) then if(dvdPlaying=true) then if(dvdFajl.volume<95) then dvdFajl.volume=dvdFajl.volume+5 end if end if else if(muzikaFlag=true) then if(audioPlaying=true) then if(sound(1).volume<250) then sound(1).volume=sound(1).volume+5 end if end if else if(filmFlag=true) then if(videoPlaying=true) then if(channel(30).sprite.volume<250) then channel(30).sprite.volume=channel(30).sprite.volume+5 end if end if end if end preuzmi seminarski rad u wordu » » » |