ActionScript - Ayuda con la ubicación de piezas de un rompecabeza

 
Vista:

Ayuda con la ubicación de piezas de un rompecabeza

Publicado por f3rn4nd4 (1 intervención) el 17/11/2010 23:33:52
Hola, pasa q estoy haciendo un rompecabezas q encontre en internet donde tengo primero dos capas una llamada animación la otra puzzle, donde puzzle es la que contiene el rompecabezas.

Dentro de puzzle, están varias capas, una donde están las piezas a mover (son MC) con nombres de instancia p1, p2......p20

En otra capa están las piezas del rompecabezas ordenado, pero están como ocultas, que se llama inv_p. cada pieza es un MC. Es solo para tomar la ubicación correcta.

otra capa, donde están las mismas piezas ordenadas, agrupadas en un MC, con nombre de instancia contenedor, que a su vez dentro de el cada una de las piezas son MC, con nombres de instancia p1, p2, p3.... p20, que son las que se mostraran cuando la pieza que moví se ubicó en el lugar correcto.

Por otro lado en una capa aparte tengo en el primer fotograma, el contador iniciado en 0 (variable exitos) y una variable con el numero de fichas (variable n).

En cada pieza a mover tengo este código:

on(press){
if(this.hitTest(_root._xmouse,_root._ymouse)){
this.startDrag();
}
}
on(release){
stopDrag();
name=this._name;
int_nom=name.substring(1);
int_nom=parseInt(int_nom);
if(eval(this._droptarget) == _parent["inv_p"+int_nom]){
_parent.contenedor["p"+int_nom]._visible=true;
++_parent.exitos;
if(_parent.exitos == _parent.n)
trace("ganaste");
}
else{
this.x= Math.random()*300;
this.y= Math.random()*100;
}
}

Ahora el problema es q no esta entrando en primera la condición, es decir para el código la ficha nunca se ubica en el lugar que es!!!...

Y por lo q me di cuenta cuando mostré con un trace la ubicación de _parent["inv_p"+int_nom], no me arrojó la correcta, salia instance6.

Por fa hechenme una manito, que ya tengo dolor de cabeza!!!

Gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problema con la condición de ubicación de las piezas del rompecabezas

Publicado por Alejandro (369 intervenciones) el 27/06/2023 18:48:11
El problema que estás experimentando se debe a que estás utilizando `eval` para evaluar el destino de la caída (`_droptarget`), lo cual puede causar problemas en algunos casos. En su lugar, puedes utilizar la función `eval` directamente en lugar de `eval(this._droptarget)` y realizar algunos cambios adicionales en el código para asegurarte de que la condición funcione correctamente. Aquí tienes una solución posible:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
on(press){
    if(this.hitTest(_root._xmouse,_root._ymouse)){
        this.startDrag();
    }
}
 
on(release){
    stopDrag();
    var targetPath:String = eval(this._droptarget); // Obtiene la ruta completa del destino de la caída
    var targetObject:MovieClip = _root[targetPath]; // Obtiene el objeto de destino usando la ruta completa
 
    if(targetObject == _parent["inv_p"+int_nom]){
        _parent.contenedor["p"+int_nom]._visible = true;
        ++_parent.exitos;
 
        if(_parent.exitos == _parent.n){
            trace("¡Ganaste!");
        }
    }
    else{
        this.x = Math.random() * 300;
        this.y = Math.random() * 100;
    }
}

En este código, se reemplaza `eval(this._droptarget)` por `eval(this._droptarget)` para obtener la ruta completa del destino de la caída. Luego, se utiliza `_root[targetPath]` para obtener el objeto de destino correspondiente.

Asegúrate de que el nombre de instancia de cada objeto de destino (`inv_p1`, `inv_p2`, etc.) coincida exactamente con el nombre de instancia que se genera en el código.

Espero que esta solución te ayude a solucionar el problema con la condición de ubicación de las piezas del rompecabezas. ¡Buena suerte con tu proyecto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar