Comunidad de diseño web y desarrollo en internet online

getChildAt sobre getChildAt

Citar            
MensajeEscrito el 25 Mar 2011 03:05 am
Que tal amigos. tengo una pequeña duda que no parece ser tan comun. puesto que no he encontrado nada en google o tal ves no he formulado bien la pregunta,

Digamos que necesito cambiar el color a un subelemento de de un mc, hago esto con una seleccion previa, para ello guardo en una variable el indice del mc seleccionado y el del subelemento :

El mc contenedor se llama "contenedor" y el colorpicker se llama "cp"

Código ActionScript :

contenedor.addlistenerEvent(MouseEvent:CLICK, seleccionar);
cp.addlistenerEvent(ColorPickerEvent.CHANGE, ccolor);
var elemento:int
var subelemento:int
function seleccionar(e:MouseEvent){
elemento=getChildIndex(e.currentTarget as movieClip);
subelemento=e.currentTarget.getChildIndex(e.target as movieClip);
}

function ccolor(e:ColorPickerEvent){
var color:ColorTransform=getChildAt(elemento).getChildAt(subelemento).transform.colorTransform;
color.color=e.color;
getChildAt(elemento).getChildAt(subelemento).transform.colorTransform.color=color
}


Obtendo un error de compilador en el que dice que hago referencia a una propiedad getChildAt() no establecida

Epero me entiendan, y alguien sepa como solucionar esto, saludos.
PD si ven algun error de sintaxis o de varibles, esto solo es codigo de ejemplo el rela es mucho mas complejo pero el error radica en lo que cito, gracias

Por cranecx

21 de clabLevel



Genero:Masculino  

Desarrollador Web

msie
Citar            
MensajeEscrito el 25 Mar 2011 11:50 am
Bien... jeje yo creo que lo que define si eres buen programador o no, es tu logica, he solucionado mi problema, explico como por si alguien se encuentra en una situacion parecida:

En un principio el problema era que diplayobject no tiene el metodo getchildat, eso se soluciona diciendole al compilador que el objeto en cuestion no es un displayobject, si no un displayobjectcontainer, por ejemplo un movieclip:

Código ActionScript :

MovieClip(getChildAt(0)).getChildAt(indice);


El problema ahora era que cuando intentaba aplicar color o hacer cualquier cosa propia de un mc me decia que no estaba llamando a un mc si no a un displayobject, despues de analizarlo un rato me di cuenta de que movieclip es una estructura parecida al tiempo de diseño, movieclip(movieclip(movieclip))), entonces hice lo siguiente:

Código ActionScript :

MovieClip(MovieClip(getChildAt(0)).getChildAt(indice)).metodo o propiedad de mc;


y listo asunto arreglado, espero que alguien le sirva esto, saludos

Por cranecx

21 de clabLevel



Genero:Masculino  

Desarrollador Web

chrome
Citar            
MensajeEscrito el 25 Mar 2011 05:29 pm
Hola,
otra forma de hacerlo sería guardando una referencia al clip, en lugar de guardar las profundidades:

Código ActionScript :

contenedor.addEventListener(MouseEvent.CLICK, seleccionar);
cp.addEventListener(ColorPickerEvent.CHANGE, ccolor);

var elemento:MovieClip;

function seleccionar(e:MouseEvent)
{
   elemento = e.target as MovieClip;
}

function ccolor(e:ColorPickerEvent)
{
   var color:ColorTransform = elemento.transform.colorTransform;
   color.color = e.color;
   elemento.transform.colorTransform = color;
}

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox

 

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