Comunidad de diseño web y desarrollo en internet online

socorro! Error #1034: Type Coercion failed: cannot convert .

Citar            
MensajeEscrito el 22 Dic 2009 11:17 am
Hola, la verdad es que soy nueva tanto en as3 como en el foro, pero os agradecería muchísimo si me pudierais echar un cable con esto porque ando bastante atascada.

El caso es que necesito crear una aplicacioncilla en la que me aparezcan 22 fichas/cartas de manera aleatoria y que no se repitan para que luego el usuario las arrastre y juegue con ellas...

Bueno he creado los 22 movieclips y los he dado el nombre de instancia mc_1, mc_2, mc_3... etc

Y luego he creado este código para crear un número aleatorio sin repeticion dentro del rango 1-22.

//creamos una matriz que contenga los números que ya han sido utilizados
var usados:Array = new Array();

//creamos la funcion random
function aleatorio(min:Number, max:Number):Number {
var num:Number = Math.floor(Math.random()*(max-min+1))+min;
return num;
}

//comprobamos si está repetido
function repetido (num:Number) {
var i:Number = 0;
var repe = false;
while (!repe && i < usados.length) {
if (num == usados[i]){
repe = true;
}
i++;
}
return repe;
}

//añadimos el listener al boton sacarcartas
sacaCarta_btn.addEventListener(MouseEvent.CLICK,sacaCartas);

// y definimos la funcion principal
function sacaCartas(event:MouseEvent) {
//la función se ejecuta siempre y cuando no hayamos sacado ya los 22 numeros
if ( usados.length < 22 ) {
var numeroNuevo:Number=aleatorio(1,22);

//también la funcion está condicionada a que el número aleatorio no esté repetido utilizando la funcion de arriba
while (repetido(numeroNuevo) ) {
numeroNuevo=aleatorio(1,22);

}
//hacemos que la funcion añada los números aleatorios al array que hemos creado antes
usados.push(numeroNuevo);
//Creo una variable que conforme el nombre de instancia de mis movieclips
var ficha="mc_"+numeroNuevo
trace(ficha);
//esto funciona, y me traza perfectamente todos los nombres de mis instancias
// AQUÍ ES DONDE COLOCO EL CÓDIGO QUE ME DA EL ERROR

// desactivamos el boton de sacar cartas cuando ya estén todas fuera
} else {
sacaCarta_btn.visible = false;
}


HASTA AQUÍ TODO FUNCIONA A LA PERFECCIÓN.

Mi problema está cuando le añado este código para mostrar los clips de las fichas/cartas utilizando el número aleatorio resultante más una string "mc_"

ESTE SERÍA EL CODIGO PUÑETERO

// creo un movieclip vacío y le añado la instancia que toque en cada momento...
var carta:MovieClip = new MovieClip();
carta.x = 565;
carta.addChild(ficha);

EL ERROR RESULTANTE SERÍA
TypeError: Error #1034: Type Coercion failed: cannot convert "mc_14" to flash.display.DisplayObject.
at TEST_fla::MainTimeline/sacaCartas()



Gracias de antemano...

¿alquien puede orientarme sobre lo que estoy haciendo mal?

Por pradae

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Dic 2009 11:20 am
Ficha es un String, si quieres que sea una referencia a un MC que está en la línea de tiempo debería ser:

carta.addChild(this[ficha])

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Dic 2009 11:58 am
Muchas gracias Jorge,

Ahora el error no aparece, pero tampoco puedo ver los movieclips, soy muuuuy torpe, lo se, pero en principio tengo los clips mc_1, mc_2, mc_3 fuera del escenario.

Y al añadirlos al clip carta al que le he dado una posicion x e y, deberían aparacer dentro verdad?

el caso es que traza perfectamente el nombre de las instancias, pero no lo consigo... :(

Por pradae

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Dic 2009 12:21 pm
Correcto, setea en posición visible, dale vueltas y tiempo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Dic 2009 12:28 pm
Muchas gracias Jorge, creo que el problema lo tengo al utilizar el método addChild, voy a buscar a ver que encuentro porque me hace cosas muy raras.

Para probar he creado un archivo nuevo con dos clips caja_mc (un clip con una linea en forma de rectángulo) y punto_mc (un círculo rojo), los dos están en escena y este código tan sencillo:
caja_mc.addChild(punto_mc) Y LO QUE CONSIGO ES QUE DESAPAREZCA EL PUNTO EN LUGAR DE APARECER DENTRO DE LA CAJA!!!

debo tener algo raro ... voy a bucear a ver si a alguien le pasa lo que a mi...

GRACIAS DE NUEVO,

Por pradae

1 de clabLevel



 

firefox

 

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