Comunidad de diseño web y desarrollo en internet online

Problema con IF en juego de ruleta con AS2

Citar            
MensajeEscrito el 01 Abr 2013 08:33 pm
Esimados amigos...
tengo un problema en AS2.

Tengo un juego, es una ruleta que gira mediante un boton, y tiene 12 casillas, en cada casilla tiene un premio, dividi los 360º en 12 y me dio como resultado secciones de 30º.

tengo una caja de texto que indica el angulo en que quedo posicionada la ruleta, que van deade el 0 al 180 y del -179 al -1 (no tengo idea por que no me toma los 360 grados, ya que cuando pasa los 180 empieza a darme numeros negativos)

La cosa es que necesito llamar a un movieclip especifico segun la casilla que salga ganadora.

en el fotograma donde se detiene la ruleta tengo el siguiente codigo

Código ActionScript :


if(angulo.text>=0 && angulo.text<=29){
win_.premium.gotoAndStop(1);
}
if(angulo.text>=30 && angulo.text<=59){
win_.premium.gotoAndStop(2);
}
if(angulo.text>=60 && angulo.text<=89){
win_.premium.gotoAndStop(3);
}
if(angulo.text>=90 && angulo.text<=119){
win_.premium.gotoAndStop(4);
}
if(angulo.text>=120 && angulo.text<=149){
win_.premium.gotoAndStop(5);
}
if(angulo.text>=150 && angulo.text<=179){
win_.premium.gotoAndStop(6);
}
if(angulo.text=180){
win_.premium.gotoAndStop(7);
}
if(angulo.text>=-179 && angulo.text<=-149){
win_.premium.gotoAndStop(7);
}
if(angulo.text>=-150 && angulo.text<=-119){
win_.premium.gotoAndStop(8);
}
if(angulo.text>=-120 && angulo.text<=-89){
win_.premium.gotoAndStop(9);
}
if(angulo.text>=-90 && angulo.text<=-59){
win_.premium.gotoAndStop(10);
}
if(angulo.text>=-60 && angulo.text<=-29){
win_.premium.gotoAndStop(11);
}
if(angulo.text>=-30 && angulo.text<=-1){
win_.premium.gotoAndStop(12);
}


Pero no me da resultado ya que me marca otro premio.

Podrian ayudarme u orientarme con esteo?

Gracias.

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Abr 2013 02:46 pm
Pero no me da resultado ya que me marca otro premio.


Es una cadena de if, a menos que tengas algún error en un rango, es bastante obvio. ¿Marca siempre el mismo, marca siempre el siguiente? Busca un patrón en el error

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Abr 2013 03:45 pm
Mira Jorge aqui esta un ejemplo de lo que me sale al exportar.

Espero que sea de utilidad.

Saludos y Gracias

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Abr 2013 04:00 pm
Pregunté si había un patrón en los errores. ¿Siempre va al premio 7? ¿Repite dos veces el mismo? ¿Siempre da el premio en el turno siguiente?, etc
Descubre un patrón en el error, eso lo logras probando muchas veces y aplicando deducción. Descubrir bugs es una de las principales virtudes de cualquier desarrollador ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Abr 2013 04:07 pm
Hola
poniendo toda la cadena, caiga donde caiga la ruleta, siempre da siempre el mismo premio, pero cuando pongo solo el primer IF me da el resultado correcto si estoy posicionado entre el 0 y el 30, cuando le agrego el siguiente y compruebo me arroja otro resultado.
Nose que puede ser el error.

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Abr 2013 04:08 pm
Pregunté si había un patrón en los errores. ¿Siempre va al premio 7? ¿Repite dos veces el mismo? ¿Siempre da el premio en el turno siguiente?, etc
Descubre un patrón en el error, eso lo logras probando muchas veces y aplicando deducción. Descubrir bugs es una de las principales virtudes de cualquier desarrollador ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Abr 2013 04:19 pm
y como se le llama a eso de Buscarg Bugs? en la jerga de los desarrolladores? :D

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Abr 2013 04:20 pm
Ok, si siempre cae en el mismo .... ¿es el último? ¿es el primero? ¿Si no entrara en ningun if quedaría en alguno? ¿Por que estás tomando la rotación de un campo de texto en vez de tomarlo directamente del MC, ejemplo

if(ruleta._rotation>xxx && ....)

¿Si trazas la rotacion cuanto da?

trace("Rotacion es "+ruleta._rotation)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Abr 2013 05:07 pm
Lo que pasa es que cuando tomo la rotacion directamente de la ruleta, me da un numero muy grande...
esto me dio
"Rotacion es 42.8739166259766"

tengo una caja de texto que se llama angulo.text que me redondea el numero y lo deja en 43 con este codigo

Código ActionScript :

angulo.text=(Math.round(ruleta._rotation*1)/1);
trace("Rotacion es "+ruleta._rotation)



influira e algo???

Saludos y gracias Jorge

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Abr 2013 05:31 pm
Pues redondea el numero y usalo para los if, sino esta comparando strings con number y eso no es bueno

Código ActionScript :

var rotacion:Number = Math.round(ruleta._rotation)
if(rotacion>=0 && rotacion<=29){
....


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Abr 2013 05:52 pm
Hola modifique el codigo segun me indicaste quedando asi

Código ActionScript :

var rotacion:Number = Math.round(ruleta._rotation)
if(rotacion>=0 && rotacion<=29){
win_.premium.gotoAndStop(1);
}
if(rotacion>=30 && rotacion<=59){
win_.premium.gotoAndStop(2);
}
if(rotacion>=60 && rotacion<=89){
win_.premium.gotoAndStop(3);
}
if(rotacion>=90 && rotacion<=119){
win_.premium.gotoAndStop(4);
}
if(rotacion>=120 && rotacion<=149){
win_.premium.gotoAndStop(5);
}
if(rotacion>=150 && rotacion<=179){
win_.premium.gotoAndStop(6);
}
if(rotacion=180){
win_.premium.gotoAndStop(7);
}
if(rotacion>=-179 && rotacion<=-149){
win_.premium.gotoAndStop(7);
}
if(rotacion>=-150 && rotacion<=-119){
win_.premium.gotoAndStop(8);
}
if(rotacion>=-120 && rotacion<=-89){
win_.premium.gotoAndStop(9);
}
if(rotacion>=-90 && rotacion<=-59){
win_.premium.gotoAndStop(10);
}
if(rotacion>=-60 && rotacion<=-29){
win_.premium.gotoAndStop(11);
}
if(rotacion>=-30 && rotacion<=-1){
win_.premium.gotoAndStop(12);
}



pero sigue mostrandome el premio 7 ( como referencia gotoAndStop(1) es igual a Premio1, gotoAndStop(2) es igual a Premio2.

Sigo metido con el tema

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Abr 2013 07:01 pm
Esto es asignación

if(rotacion=180)

Y da siempre true, por eso siempre entra allí, en cambio esto

if(rotacion==180)

es comparación.
La siguiente vez no tendrás ni que preguntarle. Si despues de unas pruebas vez que siempre entre en el 7, entonces mira con lupa la condición del 7, y revisa con detalle la sintaxis

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Abr 2013 07:05 pm
Era justo eso...

Muchas gracias Jorge...
Eres un MAESTRO

Por isasaurio

28 de clabLevel



 

firefox

 

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