2003-03-10 00:03
W tutorialu tym poruszone zostały zagadnienia związane z osadzaniem "obiektu flashowego" w treści dokumentu html.
Do osadzania obiektów Shockwave Flash na stronie html służą dwa tagi: OBJECT i EMBED. Tag OBJECT obsługiwany jest wyłącznie przez przeglądarkę firmy Microsoft czyli Internet Explorera (IE). Tag EMBED natomiast zarówno przez IE jak i wszystkie pozostałe (nie jest jednak wykluczone, że w kolejnych wersjach IE żeby znacznik EMBED był obsługiwany potrzebny będzie odpowiedni dll, w tej chwili obsługa przekazywana jest kontrolce ActiveX - pliki flash.ocx dla MX i swflash.ocx dla wcześniejszych). Jak więc powinien wyglądać kod html tak aby to co chcemy było wyświetlane przez wszystkie przeglądarki? Najczęściej tag EMBED jest zagnieżdżony wewnątrz tagu OBJECT.
<OBJECT nazwa_atrybutu="wartość" ...>
<PARAM name="nazwa_parametru" value="wartość_parametru">
...
<EMBED nazwa_atrybutu="wartość"...></EMBED>
</OBJECT>Działa to następująco. Przeglądarka IE, napotyka najpierw tag OBJECT i zajmuje się jego obsługą, wewnątrz tego tagu interpretowane są tylko tagi PARAM, natomiast tag EMBED nie jest już obsługiwany. Uruchomiona zostaje odpowiednia kontrolka ActiveX i zostają jej przekazane parametry zawarte w znacznikach PARAM. Zachowanie pozostałych przeglądarek jest odwrotne, ponieważ nie obsługują one tagów OBJECT i PARAM, zajmując się tylko tagiem EMBED (do jego obsługi służy plug-in w postaci pliku bibliotecznego NPSWF32.dll).
Jak widać w przypadku IE część parametrów związanych z obiektem flashowym zawarta jest w atrybutach tagu OBJECT, część w atrybutach tagów PARAM. Można powiedzieć, że w przypadku tagu OBJECT atrybuty są informacjami dla przeglądarki natomiast atrybuty zawarte w tagach PARAM przekazywane są flash playerowi. Dla innych przeglądarek wszystkie te informacje są atrybutami tagu EMBED.
Atrybuty znacznika OBJECT:
Wartości par atrybutów name i value znacznika PARAM:
W znaczniku EMBED można używać wszystkich opisanych atrybutów oprócz classid, codebase, movie. Specyficzne tylko dla EMBED są następujące:
Przykład:
<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="550" HEIGHT="400" id="prezentacja" ALIGN="left"> <PARAM NAME=movie VALUE="prezentacja.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="prezentacja.swf" quality=high bgcolor=#FFFFFF WIDTH="550" HEIGHT="400" NAME="prezentacja" ALIGN="left" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> </OBJECT>
Większość z opisanych wyżej atrybutów można ustawić tak żeby były uwzględniane automatycznie przy każdej publikacji. W opcjach publikowania File->Publish Settings.. i zakładka HTML.
Z listy Template możemy wybrać odpowiedni szablon, w którym będzie umieszczona prezentacja, np. taki wykrywający właściwą wersję flasha.
Dimensions umożliwia wybranie wielkości okna przeznaczonego dla flasha. Match Movie będzie odpowiadało wymiarowi prezentacji. Wybierając Pixels lub Percent można ustalić inne wymiary.
Reszta opcji dokładnie odpowiada atrybutom opisanym wcześniej. Przy czym HTML Alignment odnosi się do atrybutu align, a Flash Alignment do atrybutu salign.
Do tutorialu dołączyłem kilka pliczków. W plikach "window.htm", "opaque.htm" i "transparent.htm" umieszczono obiekty flash na różnych warstwach tak aby przetestować działanie parametru wmode. W każdym z nich za pomocą etykiety DIV i odpowiadającej jej stylowi pozycjonowane są dwa obiekty flash. Flash pierwszy nazwany "flashek1" przedstawia poruszające się kółko koloru czerwonego. Znajduje się na on warstwie o numerze 1 (z-index:1); "flashek2" z niebieskim kółkiem, znajduje się na warstwie o numerze 2 i jest przesunięty w stosunku do pierwszego 20px w lewo. Powinien więc zakrywać "flashka1". Na warstwie trzeciej najwyższej znajduje się tekst "ten napis znajduje się najwyżej". Poniżej prezentuje screeny jak to wygląda w Netscape 7.01 z Flash Playerem 6.0.65.0:
Jak widać najwyżej jest flash, który powinien być najniżej. Dodatkowo występuje dziwne zjawisko jakby flaszki przez siebie przenikały.
Tutaj wszystko jest w porządku i odpowiada położeniu warstw.
Jak w przykładzie poprzednim, dodatkowo widać, że przy tej wersji Netscape i Flash Playera obsługiwane jest już przeźroczyste tło :)
Plik "noscale.htm" zawiera przykład, w którym wielkość prezentacji jest różna od wielkości okna. Kolor tła dokumentu html jest biały, tło okna flasha jest żółte, a cała prezentacja zawarta jest na tle w postaci kwadratu w zielonym kolorze. Wartości poszczególnych atrybutów wynoszą:
width=200px, height=200px (wielkość prezentacji 100px na 100px)
scale=noscale
salign=cb
We Flashu MX został wprowadzony obiekt Stage dzięki, któremu możliwy jest odczyt wysokości oraz szerokości okna z flashem (Stage.width i Stage.height). Możliwa jest także zmiana pewnych własności ustalonych przez atrybuty scale (Stage.scaleMode), salign (Stage.align) i menu (Stage.showMenu).
W przykładzie wykorzystano przełączanie między Stage.scaleMode="noScale", a Stage="exactFit" wystarczy kliknąć na prezentację by zobaczyć efekt :)
Plik "prosta_reklama.htm" to uproszczony znacznie przykład reklamy ;) z jaką możemy się zetknąć ostatnimi czasy na różnych witrynach. Wykorzystano tu JavaScript do włączania, wyłączania widoczności bloku z flashem, a także do jego pozycjonowania. Przykład działa na IE i na przeglądarkach z enginem Gecko. W tutorialu poświęconym komunikacji flasha w przeglądarce znajdzie się min. przykład z reklamą, którą można będzie zamknąć kliknięciem ale we flashu.
Ostatni przykład "zmienna.htm" pokazuje dwa sposoby dzięki, którym przy osadzaniu flasha można przekazać mu zmienne. Pierwszy z tych sposobów stosuje w tym celu atrybut flashvars drugi łańcuch zapytania po nazwie pliku w atrybucie movie (etykieta OBJECT) lub src (etykieta EMBED).
krzepa