Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/03/2008, 03:38
Avatar de Mahalo
Mahalo
 
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 20 años, 3 meses
Puntos: 12
Re: Ayuda con menu acordeon

Vale, le he echado un vistazo y la cosa se ha complicado cuando he visto que en vez de eventos onRollOver tiene eventos de colisión (hitTest). Eso siginifica que cuando la flechita colisiona con el menú, éste se abre (como un evento onRollOver).
Tiene solución y pasa por aplicar un evento escuchador al Mouse y coordinarlo con la colisión. Es decir, si hay colisión y se pulsa el mouse, pues que se abra el menú.
Te paso todo el código rectificado. Echa un vistazo a las diferencias (en azul):
Código:
stop();
var _on:Boolean = false;
var mouseListener:Object = new Object();
mouseListener.onMouseDown = function() {
	_on = true;
}
speed = 10;
initial_width = 75;
target_width = 450;
sp = rect1._x;
this.createEmptyMovieClip("emptymc", 0);
emptymc.onEnterFrame = function() {	
for (i=1; i<=6; i++) {
	if (_root.hit.hitTest(_root._xmouse, _root._ymouse, true)) {
		Mouse.addListener(mouseListener);
		if (_root["rect"+i].hitTest(_root._xmouse, _root._ymouse, true) && _on) {
			new_x = (_root.sp-(75*(i-1)))-rect1._x;
			rect1._x += new_x/speed;
			n_width = target_width-_root["rect"+i]._width;
			_root["rect"+i]._width += n_width/speed;
		} else {
			n_width2 = initial_width-_root["rect"+i]._width;
			_root["rect"+i]._width += n_width2/speed;
		}
	} else {
		_on = false;
		Mouse.removeListener(mouseListener);
		new_x = _root.sp-rect1._x;
		rect1._x += new_x/(speed+50);
		n_width2 = initial_width-_root["rect"+i]._width;
		_root["rect"+i]._width += n_width2/(speed-1);
	}
	_root["rect"+(i+1)]._x = _root["rect"+i]._x+_root["rect"+i]._width;
	_root["movie"+i]._x = _root["rect"+i]._x-1;
	}
};
Saludos!
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge