Flex-iframe, SWFObject et IE!!!
Pour plusieurs raisons, j'ai dû ajouter une iframe par dessus mon application Flex, j'ai donc utiliser Flex-iframe (dont j'ai déjà parlé dans un ancien billet).
Cette bibliothèque fonctionne très bien, mais j'ai remarqué que les iframes ne se plaçaient pas comme il fallait dans Internet Explorer!!
En effet, l'iframe prends bien les positions dans flash, mais n'y ajoute pas la position du swf dans la page!
J'ai donc regardé de plus près la fonction FUNCTION_MOVEIFRAME dans IFrameExternalCalls.as
Pour placé l'iframe, la classe utilise l'attribut javascript offsetLeft et offsetTop du swfObject.
"frameRef.style.top = x + swfObject.offsetTop + 'px'; " +
FileStream readBytes et offset
J'avais besoin de lire les derniers octets d'un fichier en Air. Je me suis donc servi de la fonction readBytes de la classe FileStream. En regardant la signature de la fonction readBytes readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void je me suis arrêté sur le paramètre offset.
La doc disait donc : "offset : The offset into the bytes parameter at which data read should begin."
J'ai donc appelé la fonction readBytes avec un offset pour pointer vers un point précis du fichier.
Cependant, mon ByteArray était de la taille du fichier! En faisant quelques tests je me suis rendu compte que la taille de mon ByteArray était la somme du paramètre offset et length
Je me suis donc rendu compte que ce paramètre offset de la readBytes n'était pas l'offset dans le fichier mais l'index à laquel le ByteArray commence à écrire!
La bonne méthode pour lire un des octets précis d'un FileStream et de placer l'attribut position du FileStream et de faire un readBytes (mais avec un offset de 0 ;^) )
Air Amazon’s S3 et metadata
Amazon S3 est une solution d'hébergements offert par Amazon que j'utilise pour un logiciel devant sauvegarder des medias en ligne.
Pour ce faire, j'utilise donc la bibliothèque as3awss3lib de google permettant d'uploader et de downloader mes fichiers très simplement sur mon espace S3.
Très rapidement, j'ai donc eu besoin de comparer les fichiers locaux et les fichiers en ligne afin de vérifier leurs intégrités. Je ne pouvais pas simplement comparer leurs dates de modifications car les fichiers présents sur le serveur ont comme date de modification la date d'upload bien sûr.
La solution a donc été d'enregistrer cette information dans les metadatas du fichier sur S3.
API Dailymotion AS3
Il y a quelques semaines ou je présentais une technique pour inclure une vidéo Dailymotion dans Flex avec la bibliothèque de google flexiframe.
Il n'y a plus a utiliser cette méthode car Dailymotion vient de mettre à jour son API en AS3!
A noté que les fonctions et événements ont les même noms que ceux de l'API Youtube. Ce qui simplifie largement les chose!
Integration video Dailymotion dans Flex
Voilà un petit moment que j'essayais d'insérer une vidéo dailymotion dans Flex!
Le problème étant que l'api dailymotion pour flash est codé en AS2, il donc est impossible de mettre une vidéo dans son application Flex comme on peut très simplement le faire avec l'api youtube...
Il y a tout de même une solution! Pas très élégante, mais qui fonctionne!
La solution est créer une iframe au beau milieu de l'application et de la faire pointer vers la vidéo dailymotion.
Ajout de sous-titres sur Video
Voilà comment ajouter simplement dans Flex des sous titres à un VideoDisplay grâce à la classe CuePointManager.
Nous avons donc au départ un vidéo display ayant pour id "video"
Il nous faut ensuite un tableau associatif dans lequel il y aura tous les sous-titres
On utilise maintenant la classe CuePointManager pour ajouter des cuepoints à notre VideoDisplay
contentPane de Container et MouseEvent
Voilà un autre problème bien étrange que j'ai rencontré.
J'ai donc un Canvas dans lequel j'ai de nombreux composants cliquables.
Sous ce Canvas j'ai d'autre boutons... Mon souhait est donc qu'aux endroits ou il n'y a pas de composant cliquable sur le canvas, les boutons en dessous le soient! Mais pour une raison inconnue ce n'était pas la cas...
Ma première idée a donc été de mettre mouseEnabled = false sur le Canvas comme je le fais d'habitude.
Mais là, en affichant l'objet qui dispatchait l'événement souris, je me suis rendu compte que c'était en fait le contentPane du Canvas qui était à l'origine du MouseEvent... Le contentPane étant un conteneur supplémentaire de la classe Container où les objets sont réellement placés. En effet, l'osque l'on appelle la methode addChild d'un Container, l'enfant est placé dans le contentPane et non dans le Container lui-même.
Le Challenge, le proces du petrole en Amazonie
Je présente Le Challenge, le procès du pétrole en Amazonie diffusé sur le site de canal+.
C'est un web-documentaire de Honkytonk Films (où je suis développeur Flex) sur l'exploitation du pétrole en Amazonie pour faire le lien avec la diffusion à l'antenne, le 3 mars, d'un documentaire "Une idée simple et révolutionnaire" sur une proposition originale de l'Equateur.
Pendant 30 ans, la compagnie pétrolière Texaco, devenue par la suite Chevron, a exploité la région de Lago Agrio sans respecter l'environnement, y déversant l'équivalent de 30 fois la cargaison de l'Exxon-Valdez.
Sur ce projet j'ai donc était en charge de l'amélioration du player, faisant suite à celui de "L'obésité est-elle une fatalité" diffusé sur curiosphère, mais aussi du logiciel Klynt qui est l'éditeur du webdoc.