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'; " +
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.
TextArea two-way databinding et CDATA
Lorsque l'on bind une propriété a un TextArea ou un TextInput, le databinding ne se fait que dans un seul sens, c'est à dire
Lorsque source change, le TextInput est automatiquement mis à jour, cependant, lorsque l'on écrit dans le textInput "source" n'est pas modifié.
L'une des solutions décrite dans ce blog est :
//Ou pour chaque lettre entrée
<mx :TextInput id="example" text="{source}" change="{source = example.text;}" />
Mais un problème auquel j'ai était confronté est de binder le contenu d'un noeud XML