Flash objektum vezérlése javascript-b?l
Felmerülhet az igény arra, hogy az általunk megírt flash-t kintr?l szeretnénk vezérelni. Ilyenkor a JavaScript jöhet számításba, mint böngész? script. Ez a cikk ezt próbálja meg bemutatni.
Egy saját flash-t fogunk irányítani. Letölthet? innen (test.swf):
http://www.gyurasits.hu/articles/controlswf/test.swf
Ha megvan a flash, hozzunk létre egy html file-t mellé. Ebbe fogunk programozni. A szokásos HTML tagokat állítsuk be, majd helyezzük el a flash objektumot a file-ban.
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"WIDTH="200" HEIGHT="200" id="testmovie" ALIGN="">
<PARAM NAME=movie VALUE="test.swf">
<PARAM NAME=quality VALUE=medium>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED src="test.swf"
quality=medium
swliveconnect="true"
bgcolor=#FFFFFF WIDTH="200" HEIGHT="200"
name="testmovie" ALIGN=""
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
</EMBED>
</OBJECT>
Ha kész, a html böngész?vel megnézve, már meg kell jelennie a flash-nek. Tegyünk egy apró linket a flash alá, ami majd meghívja a vezérl? függvényünket, és jelez ha lejárt a movie:
<p> <a href="javascript: playMovie();">Play movie...</a><br> <br>Status: <input type="text" value="" id="status" readonly> </p>
Készítsük el a vezérlést.
El?ször kell egy JavaScript függvény, amivel megkapjuk a flash objektumot magát:
function getFlashMovieObject(movieName) {
if (window.document[movieName]) {
return window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet")==-1) {
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
} else {
return document.getElementById(movieName);
}
}
Ez böngész? függetlenül szolgáltatja a paraméterben megadott nev? flash objektumot.
A vezérlés pedig a következ?:
function playMovie() {
var flashMovie = getFlashMovieObject("testmovie");
flashMovie.Play();
document.getElementById("status").value="play..."
}
Lekérdezi a flash objektumot a “getFlashMovieObject” függvénnyel, majd egy egyszer? play hívást végez.
A flash tulajdonképpen egy nagyon egyszer? movie, amely egy “_root.stop() ;” szkriptel kez?dik, ezért már az els? frame-en megáll és ott várakozik. A JavaScript hívás indítja el, és mikor az újra az els? frame-re lép ismét megáll. Az utolsó frame tartalmaz egy JavaScript hívást amivel egy call back-et tudunk végrehajtani. Jelezve, hogy a movie lejárt.
A callback flash része, az utolsó frame-en (action script):
var jscommand:String = "callBack();";
getURL("javascript:" + jscommand + " void(0);");
és a JavaScript felöli oldalon pedig:
function callBack() {
document.getElementById("status").value="Done!"
}
Ezzel készen is vagyunk.
A kész vezérlés megtekinthet? itt:
http://www.gyurasits.hu/articles/controlswf/controlflash.html
A callback-nél lehetnek security problémák, amik miatt nem m?ködik. A böngész?n állítsuk be, hogy a flash tudja hívni az oldalon lév? JavaScript kódot!
2 Responses to “Flash objektum vezérlése javascript-b?l”
1 gabikah 1 August 2008 @ 09:49
Szia!
Szeretnék segítséget kérni a weblapom fejlesztéséhez…
Egy swf gombot helyezek el egy bal frameben és azt szeretném elérni hogy a jobb frameben nyisson meg a gomb egy html fájl.
Sokat olvastam utána fórumokon, de nem sikerült amegtalálni a megoldást az iframes problémára.
Szóval azt szeretném megkérdezni, hogy ilyen komoly programozási tapasztalaattal tudnál-e esetleg segíteni nekem?
Gab
2 GyZ 3 August 2008 @ 08:50
Szia,
A frame-ek a browser-ben hierarhikusan vannak felépítve. Vagyis a bal és a jobb frame-nek is gyanaz az ?se.
Itt találsz egy kis leírást ezzel kapcsolatban:
http://www.irt.org/articles/js015/index.htm
A frame location tulajdonságát kell megváltoztatni…
Ezt flash-b?l pedig a fenti meghívással lehet js-et hívni:
var jscommand:String = “js kód”;
getURL(“javascript:” + jscommand + ” void(0);”);
Remélem tudtam segíteni… Üdv!
Comments:
You must be logged in to post a comment.