Comunidad de diseño web y desarrollo en internet online

Menu Flash con SubMenus en Js

Citar            
MensajeEscrito el 26 Jul 2008 07:18 am
Hola a todos, he construido un menu principal en flash con submenus en js con la finalidad de no ocupar tanto espacio con el swf ya que es horizontal y con js va muy bien, el problema que me acavo de encontrar es que funciona bien en ie6(aunque tuve que hacer varias modificaciones y crear su propio css para esta version) y en ie7 tambien super, pero en firefox el swf no logra abrir los submenus no entiendo porque? ya he trabajado con menus en flash y js no he tenido problemas pero ahora si nose que esta pasando ya me rompi la cabeza por horas pero no veo que sucede aver aqui les dejo los codigos asi tambien depaso que sea una aportacion para quienes quieran hacer su mainmenu en flash y submenus en js. Ojala alguien pueda ayudarme.

Este es el codigo del swf:

Código :

btn.onRollOver = function(){
   btn.gotoAndPlay("over");
   getURL("javascript:CacheMenu('1', menuNoticias); clearTimeout(timerID)");
}

btn.onRollOut = function(){
   btn.gotoAndPlay("out");
   getURL("javascript:StartTimer('submenu01')");
}


Este es el codigo del html:

Código :

<script src="submenu.js" language="jscript"></script>

<body>
<div id="menu">

          <div id="menuNoticias">
                    <script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','99','height','30','src','btn03','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','btn03' ); //end AC code
</script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="99" height="30">
                      <param name="movie" value="btn03.swf" />
                      <param name="quality" value="high" />
                      <embed src="btn03.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="99" height="30"></embed>
                   </object></noscript>
                </div>
           </div>

 <div id="submenu01" onmouseover="clearTimeout(timerID);MM_showHideLayers('submenu01','','show');" onmouseout="MM_showHideLayers('submenu01','','hide')">
                <ul>
                  <li><a href="http://www.pcmacrostudio.com">Conciertos</a></li>
                  <li><a href="http://www.pcmacrostudio.com">Eventos Culturales</a></li>                  
               </ul>
 </div>


Este es el javascript:

Código :

function MM_findObj(n, d) { //v4.01
  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);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_showHideLayers() { //v6.0
   var i,p,v,obj,args=MM_showHideLayers.arguments;
   for (i=0; i<(args.length-2); i+=3) 
   if ((obj=MM_findObj(args[i]))!=null) { 
      v=args[i+2];
       if (obj.style) { 
         obj=obj.style; 
         v=(v=='show')?'visible':(v=='hide')?'hidden':v; 
      }
       obj.visibility=v; 
   }

}

CacheVar=true;

function MM_showHideLayersTime() { //v6.0
//alert('Show hide'+CacheVar);
   if (CacheVar==true)

   {
     var i,p,v,obj,args=MM_showHideLayersTime.arguments;
     for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
       if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
       obj.visibility=v; }
   }
}

timerID="";

function StartTimer(NameLayer) {
//alert('start time'+CacheVar);
  timerID = setTimeout("MM_showHideLayersTime('"+NameLayer+"','','hide')",1000);
}

function CacheMenu(NumLayer, el)
{
   for (i=1;i<=8;i++){
   MM_showHideLayers('submenu0'+i,'','hide')
   }
   myElement = 'submenu0'+NumLayer;
   eval(myElement).style.left = getPos(el,"Left")
   eval(myElement).style.top = getPos(el,"Top") + el.offsetHeight
   MM_showHideLayers('submenu0'+NumLayer,'','show')
}
function getPos(el,sProp) {
   var iPos = 0
   while (el!=null) {
      iPos+=el["offset" + sProp]
      el = el.offsetParent
   }
   return iPos

}

Por pandigula

23 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Ago 2008 10:46 am
No, no, no, y no...

Te aconsejo que te replantees el uso de Flash para estas cosas.
Los menús, deberían ser accesibles a todos los navegadores, además de simples, y livianos.
Flash... Javascript... deberían ser restringidos al máximo.
Nada de Flash. Poquísimo Javascript (sólo para el maldito IE)

Te aconsejo releas estas guías: [1] y [2].

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 01 Ago 2008 11:35 am
Aja! aver veamos....

Por pandigula

23 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Ago 2008 05:41 pm
Rizome, estamos para aprender!!! que me sugieres, yo quiero que mi menu sea flash como haria para los submenus????

Por pandigula

23 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Ago 2008 06:38 pm
Es que el menú, no debería ser en flash.

Tú verás lo que eliges; yo sólo te indiqué lo que es lo adecuado para tu caso.

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 01 Ago 2008 06:42 pm
Ok chevere pero no tienes alguna sugerencia de como serian los submenus si elijo flash?. Gracias por tu tiempo!!!

Por pandigula

23 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Ago 2008 08:23 pm
Lo siento... no se me ocurre... y creo que sería mejor hacerlo sólo con flash, que mezclando.

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 01 Ago 2008 09:18 pm
Rizome gracias de todas maneras!!!! Ojala alguien mas pueda aportar alguna idea mas.

Por pandigula

23 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.