Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/12/2013, 11:12
Avatar de yefranjo77
yefranjo77
 
Fecha de Ingreso: febrero-2008
Ubicación: Aragua - Venezuela
Mensajes: 312
Antigüedad: 16 años, 9 meses
Puntos: 1
De acuerdo El objeto no regresa al sitio original (Drag and drop)

Hola a todos

Estoy realizando un software educativo que tiene varios juegos de arrastrar y soltar, en el cual el ejercicio trabaja bien pero en una serie de pruebas que realice con ese ejercicio llega un momento en que el objeto no regresa al sitio original cuando el ejercicio es errado.

Los juegos se visualizan en una pelicula principal por medio de un MC VACIO (contenedor)

al principio aplique este codigo

Código:
stop ();
_global.cont = 0;
_global.desc = 0;
if (cont == 12)
{
    _global.aciertos2++;
    gotoAndPlay(61);
    this._parent.btn_siguiente.enabled = true;
    pieza1_mc.enabled = false;
    } // end if
if (desc == 12)
{
    _global.malos2++;
    gotoAndPlay(61);
    this._parent.btn_siguiente.enabled = true;
    pieza1_mc.enabled = false;
   } // end if
posX = pieza1_mc._x;
posY = pieza1_mc._y;
pieza1_mc.onPress = function (mouseDown)
{
    this.startDrag();
};
pieza1_mc.onRelease = function (mouseUp)
{
    this.stopDrag();
    if (this.hitTest(dropZone1))
    {
        cont+=1;
        gotoAndPlay(2);
        pieza1_mc._x = dropZone1._x;
        pieza1_mc._y = dropZone1._y;
      pieza1_mc.enabled = false;
    }
    else
    {
        gotoAndPlay(31);
        desc+=1;
        pieza1_mc._x = posX;
        pieza1_mc._y = posY;
    } // end else if
};

me suguieren que aplicara lo siguiente

Código:
trace("regresando a "+posX+"/"+posY);
para verificar que pasa cuando no regresa:

despues de varias pruebas paso esto:

Después de hacer la prueba en reiteradas ocasiones con el objeto estos fueron sus resultados:

en los 10 primeros intentos me dio esta ubicación que es la correcta:

regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55
regresando a 273.05/297.55

en los otros diez intentos cambio la ubicación
regresando a 601.05/309.55
regresando a 601.05/309.55
regresando a 601.05/309.55
regresando a 601.05/309.55
regresando a 601.05/309.55
regresando a 603.05/313.55
regresando a 603.05/313.55
regresando a 603.05/313.55
regresando a 603.05/313.55
regresando a 603.05/313.55

Los objetos no regresan a su posición inicial porque en el fotograma 1 estas asignando las posiciones repetidamente (cada vez que termina de reproducirse un sonido regresas al fotograma 1), y si el sonido (reproducción de fotogramas) termina y aun no has soltado el objeto, el objeto tomara su posición actual como valor inicial.

Solucion 1: Inicializar las variables mediante una función una única vez:

Código:
if(_global.ini==undefined) iniciar(); // como la función no esta definida se ejecutara "iniciar()"
function iniciar(){
   _global.ini = true; // se define variable para no ejecutar mas esta función
   posX = pieza1_mc._x;
   posY = pieza1_mc._y;
   posX1 = pieza2_mc._x;
   posY1 = pieza2_mc._y;
   ...
}
Solucion 2: Vincular y reproducir los sonidos en el código...
Vincular sonido: En biblioteca> sonido> clic derecho> propiedades> pestaña actionscript
Seleccionas "Exportar para actionscript" y le asignas un identificador con el cual lo llamaras en el codigo.

Código:
sonido = new Sound();
sonido.attachSound("IDENTIFICADOR");
sonido.start();// reproducir sonido
luego de poner en practica dichas modificaciones al principio estaba marchando todo bien pues por que corria las peliculas 1 x 1 para probarlas... luego que puse a trabajar todo el software en general se me presentan los mismos problemas.

¿Como puedo hacer para minimizar ese error? ya que pieza1_mc deberia regresar a su posición inicial cuando el ejercicio es errado.

de antemano gracia spor sus aportes
__________________
"Un punto importante para lograr nuestras metas es tener paciencia"