Comunidad de diseño web y desarrollo en internet online

Pasar texto de un MC al Root.

Citar            
MensajeEscrito el 16 Jun 2009 06:54 am
Hola ... alguien que me ayude por favor... :shock:

tengo un movieclip que cargo desde la biblioteca, en tiempo de ejecucion se crean varios de ellos esta vinculado desde la biblioteca. este es el codigo.

Código ActionScript :

//Variables
var Ruta_xml:String = "../xml/bandas.xml";
var cnt_array:Number;
var Nombre:Array = new Array();
var Categoria:Array = new Array();
var Discos:Array = new Array();
var Temas:Array = new Array();
var scMover:Boolean = false;
//Lectura XML
var Bandas:URLLoader = new URLLoader();
Bandas.addEventListener(Event.COMPLETE, xml);
Bandas.load(new URLRequest(Ruta_xml));
//Recorrido del XML
function xml(e:Event):void {
   var Lista:XML = new XML(e.target.data);
   var i:Number;
   //Pasar los datos del XML a un arreglo.
   for (i=0; i < Lista.bandas.length(); i++) {
      Nombre[i] = Lista.bandas[i].nombre;
      Categoria[i] = Lista.bandas[i].categoria;
      Discos[i] = Lista.bandas[i].discos;
      Temas[i] = Lista.bandas[i].temas;
      cnt_array = i;
   }
   CargarLista();
}
//Cargando Lista
function CargarLista() {
   //Creando lista
   cnt_array += 1;
   var i:Number;
   var Lista_mc:MovieClip = new MovieClip();
   for (i=0; i < cnt_array; i++) {
      var clip_Lista:Lista_Bandas = new Lista_Bandas();
      clip_Lista.x = 0;
      clip_Lista.y = i*20;
      clip_Lista.numero_txt.text = i+1+"";
      clip_Lista.nombre_txt.text = Nombre[i];
      clip_Lista.categoria_txt.text = Categoria[i];
      clip_Lista.discos_txt.text = Discos[i];
      clip_Lista.temas_txt.text = Temas[i];
      Lista_mc.addChild(clip_Lista);
      miPorcentaje.text = "Cargando: "+i;
   }
   var lst_x:Number = 40;
   var lst_y:Number = 39;
   var lst_w:Number = 350;
   var lst_h:Number = 340;
   //Alineando la pantalla de lista.
   Lista_mc.x=lst_x;
   Lista_mc.y=lst_y;
   Lista_mc.width=lst_w;
   //Dibujando la mascara
   var maskSprite:Sprite=new Sprite();
   maskSprite.graphics.beginFill(0x000000, 1);
   maskSprite.graphics.drawRect(lst_x,lst_y,lst_w,lst_h);
   maskSprite.graphics.endFill();
   Lista_mc.mask=maskSprite;
   //Añadir Clips dinámicos
   addChild(maskSprite);
   addChild(Lista_mc);
   addChild(Scroll_mc);
}

function Reproductor(Texto:String) {
       mitexto_txt.text = Texto
}


Como ven cada clip_Lista se añaden en el clip Lista_mc, ahora cada clip_Lista tiene una programación interna que es esta.

Código ActionScript :

lista_btn.addEventListener(MouseEvent.MOUSE_OVER , miOver);
lista_btn.addEventListener(MouseEvent.CLICK , miClick);

function miOver(event:MouseEvent):void {
   gotoAndPlay(2);
}

function miClick(event:MouseEvent):void {
   gotoAndPlay(2);
   trace(nombre_txt.text);
}
stop();


El lista_btn me sirve solo para dar el efecto al boton y no esta creado mediante código.
En tonces tengo La pantalla principal del Flash, luego un MC creado para contener las lista y poder darle una máscara. la pregunta es como puedo hacer que la funcion miClick llame a la funcion Reproductor, e intentado con

_root.Reproductor(nombre_txt.text);
this._parent.Reproductor(nombre_txt.text);
DisplayObject.parent.Reproductor(nombre_txt.text);

pero nada funciona !! como lo puedo hacer ...

El esquema sería el siguiente Root -> Listas_mc -> clip_Lista.nombre_txt.text , umm estaría llamando una funcion de Root desde un MC que esta dentro de otro... ya me estoy confundiendo y he bucado mucho pero no encuentro nada ... alguna ayudita por favor.

:P

Por geokym

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Jun 2009 08:55 am
es

Código ActionScript :

MovieClip(parent.parent)Reproductor(nombre_txt.text)

Lo del "parent.parent" es fácil de ver, tan sólo te hace falta escribir

Código ActionScript :

trace(this)

para saber "dónde estamos".
Lo de MovieClip(parent.parent) es lo que se conoce como "conversión de cast". Flash sabe que parent.parent es de tipo DisplayObject, pero no sabe nada más, así que sólo aceptará propiedades y métodos que tiene la Clase DisplayObject.
Al escribir

Código ActionScript :

MovieClip(algo)

Le estamos diciendo que nuestro "algo" es algo más que un DisplayObject. Nos sirve decirle que es de tipo "MovieClip", pues MovieClip acepta buscar propiedades, eventos y funciones que hayamos creado nosotros -tu función "Reproductor()"

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Jun 2009 07:27 pm
Lo que tu dices es que debería escribir algo como esto:

Código ActionScript :

function miClick(event:MouseEvent):void {
   gotoAndPlay(2);
   trace(nombre_txt.text);
   trace(this);
}

si pongo el trace(this) en la función me devuelve. [object Lista_Bandas]

Código ActionScript :

function miClick(event:MouseEvent):void {
   gotoAndPlay(2);
   trace(nombre_txt.text);
   Lista_Bandas(parent.parent)Reproductor(nombre_txt.text)
}

y si pongo Lista_Bandas(parent.parent)Reproductor(nombre_txt.text) me aparece el siguiente error. 1084: Error de sintaxis: se esperaba rightbrace antes de Reproductor. podrias decirme como pongo el cógigo para llamar la función que está en el root.

y Gracias por tu ayuda. (Pero no entiendo mucho aún soy muy nuevo y lo que llevo es por revisar algunos códigos hechos, igual ya estoy aprendiendo algo)

Por geokym

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Jun 2009 08:08 pm
Ok ya me funcionó muchas gracias puse esto

Código ActionScript :

trace(this+" - "+this.parent+" - "+(parent.parent)); 

y me dio como resultado esto: [object Lista_Bandas] - [object MovieClip] - [object MainTimeline]
y para hacer la llamada hice lo mismo que dijiste tu pero puse un punto despues del ultimo parentecis del parent:

Código ActionScript :

MovieClip(parent.parent).Reproductor(nombre_txt.text);

y funcionó heeee genial! muchas gracias :D

Por geokym

4 de clabLevel



 

firefox

 

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