Estoy un poco desesperado porque que como muchos saben, AS3 nos lo a puesto dificil a aquellos que no sabemos nada de OOP y venimos de AS2.
El caso es que estoy desarrollando un menú elástico con AS3 y tengo muchos problemas NECESITO AYUDAAAAA! Tenía que descargar.
Explico el proyecto.
Tengo una clase llamada "menu" que crea un menú vertical con n elementos usando un MovieClip de la biblioteca. El clip está perféctamente vinculado como "base_primaria" y tiene como clase base la de MovieClip.
Cada elemento del menú están en "button mode" y cuando clicas, llama a un método (crearsub) que crea un submenú dentro del elemento clicado.
Tengo otra clase llamada "submenu" que crea el submenú con n elementos usando un MovieClip de la biblioteca. El clip está perféctamente vinculado como "base_secundaria" y tiene como clase base la de MovieClip.
Todos los elementos del menú tienen que estar colocados dependiendo de la posición "y" y altura del resto de los elementos del menú. Para eso estoy usando un método dentro de la clase "menu" llamado "posicionar". Para animar los elementos estoy usando TweenLite.
El primer problema es que quiero recolocar todos los elementos del menú con TweenLite o el Tween de flash(que ya lo he probado) y no funciona. Probablemente la función "posicionar" sea incorrecta o no sea este el método a seguir.
El segundo problema esque quiero que al clicar en un elemento del menú principal cree su propio submenú. Si ya hubiera un submenú creado en otro elemento, éste desaparecería.
Todos los elementos deben recolocarse en cada click.
Aquí el código de la clase menu:
Código ActionScript :
package clases.menu{
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Sprite;
import clases.menu.submenu;
import com.greensock.*;
import com.greensock.easing.*;
import com.greensock.plugins.*;
public class menu extends MovieClip {
private var numelement:int;
private var itemArray = [];
private var tamArray:int;
private var i:int;
private var n:int;
private var j:int;
private var newdestino:int;
public function menu() {
for (n=0; n<4; n++) {
var item:base_primaria= new base_primaria();
addChild(item);
item.x = 0;
item.y = (item.height+2) * n ;
item.buttonMode = true;
item.name="elementomenu"+n;
item.addEventListener(MouseEvent.MOUSE_DOWN,crearsub);
item.addEventListener(MouseEvent.MOUSE_UP,eliminarsub);
itemArray.push(item);
tamArray=itemArray.length;
}
}
private function posicionar():void {
for (i=0; i<tamArray-1; i++) {
var elemento=itemArray[i+1];
newdestino = (itemArray[i].y+itemArray[i].height+2);
// the TweenLite doesn't work properly because one of another element doesn't answers
//I don't know if this is the best way to do it.
TweenLite.to(elemento, 1, {x:elemento.x, y:newdestino, ease:Elastic.easeOut});
}
}
private function crearsub(e:MouseEvent):void {
var objeto=e.target;
var subcontenedor:Sprite= new Sprite();
var misubmenu:submenu = new submenu();
subcontenedor.addChild(misubmenu);
objeto.addChild(subcontenedor);
misubmenu.alpha=0;
misubmenu.y=26;
misubmenu.x=20;
misubmenu.name="submenu";
TweenLite.to(misubmenu,0.5,{alpha:1});
posicionar();
}
private function eliminarsub(e:MouseEvent):void {
//Here I want to remove the submenu and relocate the elements again with "posicionar()"
posicionar();
}
}
}Aquí el código de la clase submenú:
Código ActionScript :
package clases.menu{
import flash.display.Sprite;
public class submenu extends Sprite {
private var numelement:int;
private var subitemArray = [];
private var tamArray:int;
private var n:int;
private var j:int;
private var objeto:Object;
public function submenu() {
for (n=0; n<4; n++) {
var subitem:base_secundaria= new base_secundaria();
addChild(subitem);
subitem.x = 0;
subitem.y = (subitem.height+2) * n ;
subitem.buttonMode = true;
subitemArray.push(subitem);
tamArray=subitemArray.length;
}
}
}
}Si alguien me pudiera ayudar, realmente lo agradecería porque estoy totalmente estancado
Gracias por adelantado
RO
