Przeładowanie obiektu Flash

W projekcie, nad którym teraz pracuję klient zażyczył sobie, żeby użytkownik mógł kliknięciem myszką przeładować obiekt flash z nowymi wartościami zmiennych, a wszystko to bez przeładowania strony, co było dość logiczne, bo niezbędne dane były już dostępne bez tego. Oczywiście na myśl od razu przychodzi JavaScript i na szczęście umożliwia on przeprowadzenie takiej akcji, bez zaprzęgania do roboty bardziej wymyślnych narzędzi.


Przygotowanie kodu HTML

Nie będę się zagłębiać nad szczegółami osadzania obiektu Flash w dokumencie HTML, bo na ten temat wiele już można w sieci znaleźć (na przykład na flashzone.pl), dla przypomnienia dodam tylko, że aby element był prawidłowo wyświetlany przez wszystkie przeglądarki odpowiedzialny za to fragment kodu powinien wyglądać następująco:

<objectclassid=" identyfikator_klasy_obiektu" codebase=" adres_URL_komponentu_ActiveX" id="unikalny_identyfikator" ...>
 	<param name=movie value="adres_URL_filmu">
    ...
	
</object>

Oczywiście podałam tylko najistotniejsze i konieczne atrybuty. Najważniejsze bowiem, by w znaczniku <object> znajdował się atrybut id i by nie było atrybutu name. Poza tym w znaczniku <embed> musi się znajdować atrybut name identyczny z atrybutem id ze znacznika <object>. Za to nie może tam być atrybutu id. Poza tym, jeśli chcemy obiekt modyfikować za pomoca JS to w znaczniku <embed> powinien znaleźć się atrybut swLiveConnect równy true.

Osadzając obiekt Flash w dokumencie możemy mu przekazywać wartości zmiennych. Robi się to na różne sposoby na przykład w adresie filmu, który może wyglądać tak: film.swf?wariant=A. Sposoby przekazywania wartości zmiennych do Flash są różne ale nie ma to większego wpływu na to o czym będę pisać dalej.

W kodzie HTML musimy też umieścić jakieś elementy odpowiedzialne za przeładowanie Obiektu Flash z nowymi wartościami zmiennych. Niech to będą zwykłe linki:

<a onClick="flashSwitch('A');" >Wersja A</a>
<a onClick="flashSwitch('B');" >Wersja B</a>

Funkcje JavaScript

Pozostaje zatem tylko zdefiniowanie funkcji flashSwitch(param). Nie jest to nic skomplikowanego wystarczy wykorzystać metody JavaScript wbudowane w obiekt Flash. Ciało naszej funkcji może wyglądać tak:

function flashSwitch(param){
	window.document.court.LoadMovie(0, "film.swf");
	window.document.court.SetVariable("wariant", param);
}

albo tak:

function flashSwitch(param){
	window.document.court.LoadMovie(0, "film.swf?wariant="+param);
}

Na flashzone.pl można znaleźć opis innych metod dzięki którym mozliwa jest komunikacja z obiektem Flash za pomoca JavaScript.

Ponieważ w moich wpisach można znaleźć prawie wyłącznie esencję, inwencji twórczej czytających pozostawię to jak wzbogacić funkcję flashSwitch(param) by na stronie widoczna była informacja, która wersja obiektu jest aktualnie uruchomiona.

2 komentarze do wpisu „Przeładowanie obiektu Flash”

    • Po pierwsze ostatnio zajmuję się zagadnieniami mało rozwijającymi. Po drugie własnie się doczekałam drugiego potomka, co nie sprzyja działalności blogowej. Po trzecie obiecuję, że się poprawię, bo zabieram się za ambitniejsze zadania.

Leave a Reply

%d bloggers like this: