Comunidad de diseño web y desarrollo en internet online

Problemas con menú de pestañas ->Detección de eventos

Citar            
MensajeEscrito el 28 Ene 2011 12:07 pm
Hola de nuevo,

Estoy haciendo un menú por pestañas. La estructura de los componentes del menú es la siguiente:
-MovieClip global (TabMenu)
En su interior contiene:
-Un MovieClip que almacenará el contenido [tabMenuContent]
-Tantos MovieClips como pestañas tengo [tab_0....tab_4]
-Tantos Moviclips como pestañas tengo que contendrá una imagen asociada a la sección de la imagen[sectionImage_0...sectionImage_4]

La idea es que cuando una sección/pestaña está activa se vea pestaña [tab_] e imagen [sectionImage_] y la sección inactiva solo sea visible su imagen [sectionImage_]
Inicialmente la pestaña activa es la primera [tab_0]

adjunto el código:

Código ActionScript :

public function TabMenuManager(_sections:Array,_tabMenuHolder:MovieClip) 
{
   numSections = _sections.length;   
   //Default active section
   activeSection = 0; 
   //MovieClip which contains tabMenu Components inside Layout
   tabMenuHolder = _tabMenuHolder;
   sectionsInfo = new Array(numSections);
   initTabs(0); 
   init();
}
private  function init():void {      
var sectionImage:MovieClip;          
for (var i:int = 0; i < sectionsInfo.length; i++) { 
   sectionImage = new MovieClip(); 
   sectionImage = MovieClip(tabMenuHolder.getChildByName("sectionImage_" + i.toString()));
   sectionImage.addEventListener(MouseEvent.CLICK, onReleaseTab); 
   ... 
   }//end 'for'
}
private function initTabs(_activeSection:int):void {
   for (var i:int = 0; i < numSections; i++) {
      if (_activeSection == i) {
      activeTab(_activeSection); 
      activeSection = _activeSection; 
      }else disableTab(i); 
   }
}
   
private function activeTab(_activeSection:int): void {
         
 var currentTab:MovieClip = new MovieClip();
 var imageSection:MovieClip = new MovieClip(); 
 //Show Tab
 currentTab = MovieClip(tabMenuHolder.getChildByName("tab_" + _activeSection.toString()));
 currentTab.visible = true; 
 //Show only the section
 imageSection = MovieClip(tabMenuHolder.getChildByName("sectionImage_" + _activeSection.toString())); 
 imageSection.visible = true; 
}
      
private function disableTab(_disableSection:int):void {
         
var currentTab:MovieClip = new MovieClip();
var imageSection:MovieClip = new MovieClip(); 
//Hide Tab
currentTab = MovieClip(tabMenuHolder.getChildByName("tab_" + _disableSection.toString()));
currentTab.visible = false; 
//Show only the section
 imageSection = MovieClip(tabMenuHolder.getChildByName("sectionImage_" +  _disableSection.toString())); 
 imageSection.visible = true; 
}   


initTabs() funciona perfectamente pero el caso es que no hace caso a los listeners. Si quito el iniTabs del constructor si funcionan los listener cuando pulso sobre una pestaña pero una sola vez. Si pulso sobre una segunda pestaña no va....

Gracias!

Por emedmaria

73 de clabLevel



 

chrome
Citar            
MensajeEscrito el 28 Ene 2011 12:09 pm
Me he expresado mal, el listener lo detecta (me he puesto un trace que me indica la pestaña pulsada) el problema es que solo hace el initTabs una vez...No entiendo por qué

Por emedmaria

73 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Ene 2011 09:08 am
Sólo veo que llames a "initTabs" en la función TabMenuManager (y siempre con argumento 0)
Claro que, en el código que has puesto, me falta la función "onReleaseTab".
También me falta el código donde le indiques la "propiedad name" a tus "SectionImage_".

Ten en cuenta que NO tiene nada que ver el "nombre de instancia" con la propiedad "name"
(ver, p.e. el post

Por Eliseo2

710 de clabLevel



 

firefox

 

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