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 ActionScript :
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 };
SOLISART... me suguirio que aplicara lo siguiente
Código ActionScript :
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
luego M4RK me dice que: 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 ActionScript :
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 ActionScript :
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.
Inclusive los sonidos no se escuchan cuando corro el software completo... pero si se escuchan cuando pruebo pelicula por pelicula.
¿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