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:
para verificar que pasa cuando no regresa: trace("regresando a "+posX+"/"+posY);
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:
Solucion 2: Vincular y reproducir los sonidos en el 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; ... }
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:
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. sonido = new Sound(); sonido.attachSound("IDENTIFICADOR"); sonido.start();// reproducir sonido
¿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