JeuWeb - Crée ton jeu par navigateur
Probleme de rollover - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Probleme de rollover (/showthread.php?tid=373)



Probleme de rollover - Antyoz - 29-10-2006

Voila je voudrais que quelqu'un me corrige ou regarde se qui cloche avec ce code. Je souhaite faire un rollover avec 1 son, en local il marche nikel mais pas sur le serveur !! bizarre.

dans la 1 ligne du body j'ai ajouté la balise embed :

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="MM_preloadImages('images/head_03.gif','images/head_05.gif','images/boutonsover_13.gif','images/boutonsover_14.gif','images/boutonsover_15.gif','images/boutonsover_16.gif','images/boutonsover_17.gif','images/boutonsover_18.gif','images/boutonsover_19.gif','images/boutonsover_20.gif')"><EMBED NAME="Son" SRC="suit.wav" MASTERSOUND HIDDEN="true" LOOP="false" AUTOSTART="false"></embed>

et sur mon rollover ceci :

<td colspan="2"><a href="index.html" onMouseOut="MM_swapImgRestore();StopSound('Son','wav')" onMouseOver="MM_swapImage('Image431','','images/boutonsover_13.gif',1);PlaySound('Son','wav',1)"><img src="images/boutons_13.gif" name="Image431" width="219" height="27" border="0" id="Image431"></a></td>

merci.


RE: Probleme de rollover - Raoull - 29-10-2006

Heu... Déjà tu mets une balise embed DANS la balise body... C'est pas possible !
Ensuite il faudrait que tu balances tes fonctions playsound et stopsound pour qu'on te dise d'ou vient le probleme.

EDIT :

Ha... Je pense comprendre apres coup, que playsound semblerait être une fonction "global" à ton EMBED, et que tu ne défini pas.
Mmm je ne peux pas vraiment t'aider en fait, car cette facon de faire, avec un embed, je connais pas du tout. Et je pense qu'il ya bcp plus simple, mais je peux pas t'aider, dsl.


RE: Probleme de rollover - Antyoz - 28-11-2006

Allez les gars j'ai vraiment besoin d'aide !! je suis trop nul en codage pour comprendre le probleme.

J'ai 3 synthés un korg dv 800 un yamaha dx 100 et un yamaha psr 16. Je voudrais bien pouvoir ajouter un son sur mes rollover (voir détail ci-dessus).

J'ai un site test http://scylla.6tech.net/index.php en local c'est nickel mais lorsque le site est en ligne nada, keuchi, walou, marche po !!

Merci d'avance. Votre grapheu préféré !!


RE: Probleme de rollover - PetitMonstre - 28-11-2006

Sa marche en local?
Fait attention car en local il ne prend pas en compte les majuscule tandis que le serveur (généralement) oui.
Si c'est pas sa je sait pas.


RE: Probleme de rollover - Raoull - 28-11-2006

Bon j'ai essayé de tester ton code tel quel.
Enfin en simlpifiant au max, avec 2 images simples, et un son de ma cave (3ko).

Pour ca, j'ai surtout récupérer tes fonctions javascript pour le son, qui sont au coeur du probleme.

Voici le code que j'ai :

Code PHP :
<?php 
<html>
<
head>

<
script>

// fonctions pour preload/swap images
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function
MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function
MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function
MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// fonctions pour le son
function VerifPlugIn(ExtensionFile)
{
var
IsEnabled = true;
  if (navigator.appName == "Netscape")
   {
    IsEnabled = false;
for(var
x=0;(x<navigator.mimeTypes.length && !IsEnabled);x++)
{
if(
navigator.mimeTypes[x].suffixes.indexOf(ExtensionFile)>=0)
IsEnabled = navigator.mimeTypes[x].enabledPlugin;
}
    }
return
IsEnabled;
}


function
PlaySound(MyName,MyExtension,MyLoop)
{
var
AudioEnable = VerifPlugIn(MyExtension),TheLoop = '';
if (
navigator.appName == "Netscape" && MyLoop==1) TheLoop='true';
if (
AudioEnable) eval('document.'+MyName+'.play('+TheLoop+')');
  }

    
function StopSound(MyName,MyExtension)
{
var
AudioEnable = VerifPlugIn(MyExtension);
if (
AudioEnable) eval('document.'+MyName+'.stop()');
  }
</
script>

</
head>
<
body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="MM_preloadImages('img_a.gif','img_b.gif')">

<
embed NAME="Son" SRC="suit.wav" MASTERSOUND HIDDEN="true" LOOP="false" AUTOSTART="false"></embed>

<
a href="test.htm" onMouseOut="MM_swapImgRestore();StopSound('Son','wav')"
onMouseOver="MM_swapImage('img1','','img_b.gif',1);PlaySound('Son','wav',1)">
<
img src="img_a.gif" name="img1" width="200" height="50" border="0" id="img1"></a>

</
body>
</
html>

Le test est faisable ici : http://isoat.free.fr/test/test.htm

- test avec IE6 : tout marche impec
- test avec Opera : le son ne fonctionne pas
- test avec Firefox 2 : hum ... il me demande d'installer quicktime et en fait ca me saoule un peu...

1) je pense que tes fonctions doivent être alléger. Par exemple, à chaque appel de "playsound" ou "stopsound"
il y a de gros appel à "VerifPlugIn".
Pourquoi vérifier à chaque fois ?
Tu vérifie 1 fois au chargement de la page, tu stick le resultat dans une var, et c'est réglé.

Même mieux ... en javascript, moi je pense que plus c'est simlpe, mieux c'est !
Il faut arriver à faire un appel direct à "document.'+MyName+'.stop()" et "document.'+MyName+'.paly()".
Et si les navigateurs ne le prenne pas en charge, et bien y'aura pas de son ... point final.

2) ormis ces détails, je pense que le probleme principal, c'est la balise EMBED qui est surtout reconnu par IE pour le son.
Avec les autres navigateurs, c'est la galère...

Ya très longtemps, quand je jouais à mettre du son dans mes pages, je sais plus comment je faisais mais
j'avais réussi à me passer de EMBED.

Je vais chercher un peu si tu veux.
Ya quand même bien une solution toute prete fourni quelque part sur le web !


RE: Probleme de rollover - Antyoz - 28-11-2006

Heu je connais absolument rien au codage moi !! Sinon c'est bon ca marche sous ie7 aussi.

Enorme Merci.

Pour te remercier je te fais passer en tete de ma liste de commande !! J'ai besoin d'une liste complete des textures que tu souhaites pour les faire. Encore merci Roull.


RE: Probleme de rollover - Raoull - 28-11-2006

lol angel, je te signale que je n'ai absolument rien fait !!
J'ai repris ton code tel quel !

Alors pourquoi ca marche sur ma page test, et pas sur ton site ... je ne sais pas.
Sans doute parce qu'il y a des erreursjavascript !!!

Sinon, j'ai cherché un peu donc.
Et le probleme pour tout le monde est toujours le même : IE contre le reste du monde.
On trouve des codes qui fonctionnent pour FF, d'autres pour IE, et sur tous les forums
où les gens cherchent la solution miracle ... rien :/

Sinon, je sais où tu as chopé ton JS pour le son.
Et en effet il tient la route, même si un simple
Code PHP :
<?php 
function PlaySound() {
document.Son.play();
}

    
function StopSound() {
document.Son.stop();
}
doit fonctionner.

J'ai trouvé la même chose simplifié, ici :
http://docanski.free.fr/valastuc/gadget14.htm

Mais tout ca ca ne marche que pour IE.

Sinon, ya l'utilisation de OBJECT à la place de EMBED, et là aussi ya un style d'édition des attribut de OBJECT pour IE,
et un autre pour FF.

Bref, pas de solution miracle...

Mais puisque que seul IE a l'air de t'interessé, te voila rassuré : ton code fonctionne, fais juste gaffeà ne pas faire d'erreur!

Quand à mon passage en priorité, tu m'as dit que tu en avait pour 15 jours, et moi je suis pas pressé.
Alors fat ce que tu as à faire, fini les 1ere commandes que tu as, ya pas de souci Wink surtout pour si peu...