A következő címkéjű bejegyzések mutatása: flash. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: flash. Összes bejegyzés megjelenítése

2009. január 21., szerda

Újabb Flash bug(?) fragment-hez ugráskor

Történt is mostanában, hogy szükség lett volna arra, hogy a Flash egy bizonyos anchor-hoz ugorjon – megszokott <a href="#header" /> megoldás HTML-ben –, szóval gondoltuk tök egyszerű lesz, hogy navigateToUrl('#header'); és boldogság!

Minden szépen és jól működött, amíg meg nem próbáltuk Safari alatt – OS X és Windows egyaránt –, és tapasztaltuk, hogy bizony az a fránya Flash valamiért az egész oldalt újratölti.

Megnéztem, ha HTML-ből egy link segítségével ugrok a #header-hez, akkor nem tölti újra, csak Flash Player-ből hívva, ebből is a következtetés, hogy Flash Player bug.

Ideiglenesen a navigateToUrl()-nek JavaScript hívást adunk át, így áthidalva a problémát, de szeretünk gondolni a JavaScript-et nem engedélyező látogatókra is!

Valaki valami megoldást?

2008. november 2., vasárnap

Saját JavaScript event dispatch-elése Flash-ből

Igen, ez a nagy kérdésem, hogy hogyan is lehetne ezt? Flash-ben bekövetkezett eseménykor szeretném, ha értesülne róla a JavaScript, tehát, hogy a beágyazott Flash Applet egy JavaScript event-et dispatch-eljen.

Valaki tud rá megoldást?

Nem, a fix metódusnév meghatározása nem jó, az nem Event driven megoldás lenne, és nekem nem is jó most!

Update: Kicsit kifejteném, mert kaptam visszajelzést, hogy nem eléggé érthető.

Amikor rákattintunk egy gombra, akkor az egy "click" típusú Event-et dispatch-el. Ugyanakkor lehetőségünk van arra is, hogy saját típusú Event-eket dispatch-eljünk, amikor csak akarunk. Ugyanilyen "tudással" bír az általunk beszúrt <object /> elem is, ami a fentebb említett Flash Applet-ünket tartalmazza. Na, én ebből a Flash Applet-ből szeretnék valahogyan az őt tartalmazó <object />-ünkön egy saját típusú Event-et dispatch-elni.

Ha valaki még mindig nem értené, szívesen elmagyarázom bővebben!

2008. október 22., szerda

Adobe Flash Player és Internet Explorer FlashVars bug

Amint azt ígértem korábban, egy újabb felfedezett bug-ot írok le. Úgy egy héttel ezelőtt ráment egy egész délutánunk, hogy rájöjjünk a megoldásra.

Kitérő

Egy eléggé nagy oldalnak a sitebuildere vagyok, így eléggé érdekes dolgokba tudok belefutni. Egy más oldalakba beágyazható videólejátszót készültünk a publikum számára elérhetővé tenni, viszont a tesztek során — ami persze a fejlesztés során minden más böngészőben (fejlesztés alatt Mozilla Firefox és Safari böngészőket használok) jól működött — előjött, hogy Internet Explorer-ben természetesen nem működik tökéletesen.

Alap elgondolásban úgy működött volna az egész, hogy a felhasználó egy állandó kódot ágyaz be az oldalába, mert ezt természetesen később nem tudjuk megváltoztatni, ahogy a youtube.com sem tudja. Így a beszúrt lejátszó útvonala tartalmazta volna a videó azonosítóját és query string-ben egy szín hexa kódját, ami a videó háttérszínét határozhatja meg.

Ezután a megadott URL mögötti kis okosság tovább dobja a lejátszó aktuális címére, query string-ben a videó azonosítójával, a megadott színnel és egyéb paraméterekkel felvértezve.

Példában: <object/> forrásának ez van megadva: http://example.com/videoid?color=eeeeee, ami átirányit így: http://example.com/player.swf?id=videoid&color=eeeeee&foo=...

Szóval ez volt az alap elképzelés, de valamiért csak a color változót látta a lejátszó, és nem értettük! Végül rájöttünk!

Megoldás

Az ActiveX-es Adobe Flash Player valamilyen okból kifolyólag a beszúráskor, tehát a HTML-ben megadott query string-et veszi alapul flashvars-nak. Az átirányítást figyelembe veszi, tehát a végleges cél flash file-t fogja betölteni, de az ott megadott query string-et már nem fogja flashvars-nak beadni. Ez csak akkor történik így, ha a HTML-ben van query string. Ha nincs, akkor az átirányításkor megadott query string-et teljes mértékben felveszi a flash applet. Megoldásként tehát azt alkalmaztuk, hogy nem color=eeeeee, hanem a videó azonosítójához hasonlóan, az URL részeként kell átadni.

Példában: http://example.com/videoid/eeeeee és ezt már átirányíthatjuk az előbb megadott címre, és az applet is jól fogja lekezelni.

Szóval újfent azt mondom, hogy utálom az Adobe Flash-t!

2008. október 20., hétfő

Flash beágyazása jQuery-vel

Minden simán ment, amíg a flash applet nem akarta használni az ExternalInterface-t, ugyanis bár meghívta a JavaScript metódust, de annak visszatérési értékét már nem kapta meg. Internet Explorer alatt. Csini mi?

Három napi bugkeresés után rájöttem, hogy ha a jQuery append(), prepend() vagy html() metódusok egyikével szúrom be a generált HTML-t, akkor bizony nem működik, ha pedig innerHTML-lel, akkor igen. Az már külön hab volt korábban a tortán, hogy ha nem generálok Internet Explorer alatt az applet-nek ID-t, akkor ugyan nem kapja meg az applet ígyse-úgyse a visszatérési értéket, de legalább JScript hibát is dob.

Adobe Flash Player 10

Mostanában jelent meg az Adobe által megvásárolt Flash Player új, 10-es verziója. Szükség is volt az új verzió kiadására, mivel nemrég jelent meg a CS4, amit telepakoltak ugye új "jóságokkal", aminek sokan örültek, mert most majd húdejó csillivilli effektekkel tudják ellátni, az amúgy is lassan erőművet igénylő oldalaikat.

Értem én, hogy fejlődik a technika, újabb és újabb ötleteket gyártanak Adobe-nál is, amit szeretnének millió oldalon használva látni, és milliárd gépen futni látni. Viszont mi lesz majd azokkal a hibákkal, amiket — ugye egyrészt az új funkciókkal beletettek, és amiket — korábban benne hagytak?

Későbbiekben — eddig kettőt biztosan — fogok írni ezekről az idegesítő hibákról, amiket munkám során megtapasztaltam vele kapcsolatban. Ezek nem csak a Flash használatával, belső működésével kapcsolatos hibák lesznek majd, hanem a már elkészült applet-ek beszúrása kapcsán előtárulkozó idiótaságok is.

Szóval köszöntsük az új verziót, várjuk a hibajavításokat (9-es playerből 124 release készült, szóval lesznek)!