desde el main creo menus con comportamientos onRollOver, onRollOut, onPress, onRelease y onReleaseOutside, metodos "get and set" y funciones propias como la funcion draw, que dibujan rectangulos con unas dimensiones y un color determinado. bien hasta ahi todo bien. mis "menus-rectangulos" son arrastrables, con dimensiones variables, pero cuando a un menu, que es un MC intento cambiarle la anchura, me desaparece el color, vamos, desaparece del lienzo el elemento y no se porque y si en vez de ponerle un color, le quiero cargar un JPG, directamente no puedo ni posicionarlo ni arrastrarlo ni siquiera detecta cuando hago onRollOver, soo me dibuja el JPG con sus dimensiones en las coordenadas 0,0 y de ahi no se mueve... ojala alguien pueda ayudarme. Aqui pego el codigo de las clases para que echeis un vistazo.
Main.as
Código :
import flash.geom.ColorTransform;
import flash.geom.Point;
import flash.geom.Transform;
import com.mosesSupposes.fuse.*;
class Main
{
//constantes de la clase
private static var ANCHURA = 100;
private static var ALTURA = 100;
private static var MARGENPANTALLA = 15;
private static var BORDE = 5;
public static var NUMMENUS = 3;
public static var mcLienzo:MovieClip;
public static var fondo:MovieClip;
public static var crearBarraMenu:Barra;
public static var menu0:Menu;
public static var menu1:Menu;
public static var menu2:Menu;
private static var colorMenu0:ColorTransform = new ColorTransform(0,0,0,0,255,0,0,0);
private static var colorMenu1:ColorTransform = new ColorTransform(0,0,0,0,0,255,0,0);
private static var colorMenu2:ColorTransform = new ColorTransform(0,0,0,0,0,0,255,0);
//variables de la clase
private static var distanciaVertical:Number = Stage.height / (NUMMENUS + 1);
private static var posXini:Number = Stage.width - ANCHURA - MARGENPANTALLA;
public static function main():Void
{
mcLienzo = _root.createEmptyMovieClip("lienzo", _root.getNextHighestDepth());
fondo = mcLienzo.createEmptyMovieClip("fondo", mcLienzo.getNextHighestDepth());
Rectangulo.draw(fondo, new ColorTransform(0, 0, 0, 0, 200, 200, 200, 0), Stage.width, Stage.height, 0, 0);
crearBarraMenu = new Barra(mcLienzo);
menu0 = new Menu(mcLienzo, ANCHURA, ALTURA, posXini, 0, colorMenu0);
menu1 = new Menu(mcLienzo, ANCHURA, ALTURA, posXini, 0, colorMenu1);
menu2 = new Menu(mcLienzo, ANCHURA, ALTURA, posXini, 0, colorMenu2);
menu0.setX(posXini);
menu1.setX(posXini);
menu2.setX(posXini);
menu0.setY(distanciaVertical - (ALTURA/2));
menu1.setY(distanciaVertical*2 - (ALTURA/2));
menu2.setY(distanciaVertical*3 - (ALTURA/2));
trace(posXini);
trace(menu0.getX());
menu0.dibujarMenu();
//menu1.dibujarMenu();
//menu2.dibujarMenu();
}
}Menu.as
Código :
import flash.geom.ColorTransform;
import flash.geom.Point;
import flash.geom.Transform;
import com.mosesSupposes.fuse.*;
import mx.effects.Tween;
class Menu extends MovieClip{
//elementos de la clase
private var menuCrear:MovieClip;
private var lienzo:MovieClip;
private var ancho:Number;
private var alto:Number;
private var posicionX:Number;
private var posicionY:Number;
private var id:Number;
private static var contID:Number = 0
private var colorMenu:ColorTransform;
//constructor
public function Menu(mcLienzo:MovieClip, anchura:Number, altura:Number, posX:Number, posY:Number, color:ColorTransform) {
lienzo = mcLienzo;
menuCrear = lienzo.createEmptyMovieClip("menuCrear", lienzo.getNextHighestDepth());
id = contID;
contID++;
ancho = anchura;
alto = altura;
posicionX = posX;
posicionY = posY;
colorMenu = color;
//menuCrear.loadMovie("\\pictures\\prueba.JPG");
menuCrear.onPress = arrastrarMenu;
menuCrear.onRelease = soltarMenu;
menuCrear.onReleaseOutside = soltarMenu;
menuCrear.onRollOver = function() {
trace("sobre el menu");
}
menuCrear.onRollOut = function() {
trace("fuera del menu");
}
}
//dibuja el menu en la posicion seleccionada y con el color seleccionado
public function dibujarMenu() {
Rectangulo.draw(menuCrear, colorMenu, ancho, alto, posicionX, posicionY);
}
//funcion encargada de ajustar los elementos del menu dependiendo del tamaño de este
private function ajustarElementosMenu() {
trace("ajustarElementosMenu");
}
//funcion encargada de comprobar las posiciones x_mouse, y_mouse y el estado del puntero del raton
public function comprobarPuntero() {
trace("comprobarPuntero");
}
//funcion encargada de hacer drag en nuestro menu
private function arrastrarMenu() {
this.startDrag(false);
}
//funcion encargada de hacer drop en nuestro menu
private function soltarMenu() {
this.stopDrag();
}
//funcion encargada de redimensionar el menu y llamar a la funcion de ajustarElementosMenu()
private function redimensionarMenu() {
trace("redimensionarMenu");
}
//funcion llamada al release del raton que gira con un angulo aleatorio el menu
private function girarMenu() {
trace("girarMenu")
}
//funcion quwe endereza la rotacion del menu y lo deja encuadrado a la ventana
private function enderezarMenu() {
trace("enderezarMenu")
}
//GETS
public function getX():Number {
return posicionX;
}
public function getY():Number {
return posicionY;
}
public function getAlto():Number {
return alto;
}
public function getAncho():Number {
return ancho;
}
public function getID():Number {
return id;
}
//SETS
public function setX(nuevaX:Number) {
posicionX = nuevaX;
}
public function setY(nuevaY:Number) {
posicionY = nuevaY;
}
public function setAncho(nuevoAncho:Number) {
ancho = nuevoAncho;
}
public function setAlto(nuevoAlto:Number) {
alto = nuevoAlto;
}
//actualiza el menu
public function actualizaMenu() {
this._x = posicionX;
this._y = posicionY;
this._height = alto;
this._width = ancho;
}
}Rectangulo.as
Código :
import flash.geom.ColorTransform;
import flash.geom.Point;
import flash.geom.Transform;
import com.mosesSupposes.fuse.*;
class Rectangulo extends MovieClip
{
public static function draw(mv:MovieClip, color:ColorTransform, anchura:Number, altura:Number, x:Number, y:Number) {
with(mv){
lineStyle(1, color.rgb, 255);
beginFill(color.rgb, 255);
moveTo(x, y);
lineTo(anchura + x, y);
lineTo(anchura + x, altura + y);
lineTo(x, altura + y);
lineTo(x, y);
endFill();
}
}
}para probar el codigo de loadMovie, en la carpeta donde creeis los *.as, deberiais crear una carpeta llamada pictures y dentro de ella un archivo prueba.jpg
espero que este todo el codigo claro y que podais ayudarme
muchas gracias de antemano
atentamente
maije
