Pages : 1
#1 Le 09/01/2008, à 15:52
- DZ
Compenser wmode en Flash
Bonjour à tous, et bonne année.
J'espère poster dans la bonne catégorie. Je ne suis pas développeur en flash, donc si ce qui suit est à cà´té de la plaque, ne vous étonnez pas...
En gros mon souci, est que je porte une application qui tournait sous windows, sous linux.
Code php - Javascript, avec du flash à l'intérieur lisant parfois des informations dans des fichiers xml.
Dans le logiciel version windows, on affiche différentes choses à l'écran (textes - photos - animations flash - vidéos mpg, etc...). On veut pouvoir quitter l'animation en cours en cliquant en bas à droite de l'écran. Sur windows un simple calque au dessus du flash, lorsqu'on affiche un fichier flash, fait l'affaire.
Sous linux le flash reste au premier plan quoiqu'il arrive.
J'avais donc demandé au graphiste de mettre en place un fichier flash, qui lirait le fichier flash de mon choix (dont il trouve l'adresse dans un fichier xml), et qui lirait un fichier flash qu'il placerait en bas à droite, qui contiendrait le code nécessaire pour aller sur une autre page du logiciel.
Il n'est pas développeur, on a donc mis en place ce code avec pas mal de docs et de recherche sur internet, mais personnellement je n'avais jamais fais de programmation via Flash.
Le code fonctionne correctement, mais gros souci, l'animation se lit bien plus lentement avec ce "player" que sans (parfois 2fois moins vite si l'animation est complexe).
Voici le code du "player":
var doc;
doc = new XML();
doc.onLoad=analyser; //cette fonction est appelle lorsque le load
est terminé
doc.load("videos.xml");
loadMovieNum("action.swf",2);
function analyser(success)
{
//Si le chargement a été réalisé avec succès...
if (success)
{
if(verifier())
{
balise1=doc.firstChild;
loadMovieNum(balise1.attributes.Fichier,1);
}
}
}
function verifier()
{
balise1=doc.firstChild;
//Verification du nom de la premiere balise
if (balise1.nodeName!="LISTE") return false;
elem=balise1.firstChild;
while (elem !=null && elem.nodeType!=1) elem=elem.nextSibling;
return true;
}
Voici le code d'action.swf:
on (rollOver) {
getURL("index.php?action=j&stop=ok");
}
Le but était donc que "action.swf" soit au premier plan en étant situé en bas à droite, et l'animation dont l'adresse est dans videos.xml soit au second plan.
Quelqu'un voit-il l'origine de la lenteur de la lecture?
Toute aide serait précieuse, vu que visiblement le wmode n'est pas prêt de fonctionner sous linux
Merci.
DZ
Dernière modification par DZ (Le 22/01/2008, à 14:41)
Hors ligne
#2 Le 11/01/2008, à 11:10
- DZ
Re : Compenser wmode en Flash
Personne qui sache me dire si la lenteur peut être causée par la fonction loadMovieNum("action.swf",2); ou par autre chose?
Personne qui voit une autre alternative?
Merci d'avance, je désespère de finir le portage du logiciel sous linux
Hors ligne
#3 Le 15/01/2008, à 10:34
- DZ
Re : Compenser wmode en Flash
Ca sent la loose si je comprends bien?
Hors ligne
#4 Le 16/01/2008, à 03:09
- Alain.g
Re : Compenser wmode en Flash
Sur windows un simple calque au dessus du flash, lorsqu'on affiche un fichier flash, fait l'affaire.
Sous linux le flash reste au premier plan quoiqu'il arrive.
Salut
Je ne peux pas répondre à ta question, c'est juste pour signaler qu'il est possible de bidouiller avec une iframe vide afin d'afficher un "calque" par-dessus une animation flash pour les navigateurs utilisant Gecko (firefox, ephiphany, kazehakaze ...).
Konqueror peut déjà contourner ce problème. Reste Opera Linux...
à‡a fait quelques mois que le bug est marqué comme résolu du cà´té de Mozilla. Donc ça avance...
Mais il faudrait encore des changements significatifs dans le plugin d'adobe.
Dernière modification par Alain.g (Le 16/01/2008, à 03:14)
Xubuntu Karmic !
Hors ligne
#5 Le 16/01/2008, à 11:29
- DZ
Re : Compenser wmode en Flash
Salut!
Tu veux dire utiliser un iframe comme on utilise un calque?
J'ai pas utiliser d'iframe depuis des lustres, je vais essayer de voir si c'est possible, merci pour cette piste en tout cas, ca fait des mois qu'aucune piste de ce genre ne m'avait été fournie
Quand tu dis que c'est marqué résolu du cà´té de chez firefox, tu peux voir ca oà¹?
Merci à toi!
Hors ligne
#6 Le 16/01/2008, à 12:17
- Alain.g
Re : Compenser wmode en Flash
Un peu plus tordu que ça en fait , l'iframe en dessous du "calque" ou du contenu de celui-ci
regarde le code source de cette page de test :
Là j'ai généré l'iframe par javascript (avec détection navigateur)
C'est juste une page de test, pas un modèle à suivre...
J'avais trouvé l'astuce sur cette page qui lui l'avait trouvée sur google vidéo
Quand tu dis que c'est marqué résolu du côté de chez firefox, tu peux voir ca où?
https://bugzilla.mozilla.org/show_bug.cgi?id=137189
un commentaire d'un développeur :
Robert O'Callahan (:roc) 2007-07-29 15:39:36 PST #93
Adobe wants to fix it. They had received a lot of user feedback and in fact
were pressuring us to fix our side (which we have done). So don't annoy them
please.What KHTML does is a partial solution. It's not going to happen for 1.9
although we will be able to do it after that.
Dernière modification par Alain.g (Le 16/01/2008, à 12:26)
Xubuntu Karmic !
Hors ligne
#7 Le 16/01/2008, à 16:03
- DZ
Re : Compenser wmode en Flash
Yes!!!
http://blog.marcoos.com/2006/07/21/html-div-above-a-flash-animation-on-linux-its-possible/
En lisant le code source de son truc j'ai fini par m'en sortir, bizarrement ca ne marchait pas au début, car je n'avais pas reprécisé le positionnement du calque en width height top left, alors que je l'avais fais en début de fichier, ce qui m'a vallu de passer du temps pour rien dessus.
Merci beaucoup! 6 mois que j'espérais ca
Hors ligne
#8 Le 22/01/2008, à 14:46
- DZ
Re : Compenser wmode en Flash
Je me suis fais une fausse joie (à moitié).
Via cette astuce, j'arrive à mettre l'iframe par dessus le calque, mais l'iframe n'est pas transparente mais blanche... (je souhaiterai voir le fichier flash en plein écran, et que l'iframe soit par dessus mais transparente.
Vu l'astuce pour réussir à mettre l'iframe par dessus le fichier flash, je me fais pas trop d'illusion, mais si quelqu'un trouve une solution, je prends...
J'ai essayé avec:
<iframe style="position: absolute; top:<? echo ratioH($resolution,650); ?>px ; display: none; left:<? echo ratioW($resolution,1130); ?>px; width:<? echo ratioW($resolution,150); ?>px; height:<? echo ratioH($resolution,150); ?>px; z-index: 5; background-color:transparent"
id="iframe"
ALLOWTRANSPARENCY="true"
frameborder="0"
scrolling="no">
</iframe>
Hors ligne
Pages : 1