Comunidad de diseño web y desarrollo en internet online

Ayuda con clase

Citar            
MensajeEscrito el 01 Dic 2010 06:08 am
Hola tengo un problema con una clase que estoy creando es para la I.A de un MC
bien mi código es este
Bien ahora mi problema es que cuando el MC en este caso dino colisiona contra una pared su dirección cambia
de 0 a 1 o viceversa el tema es como estoy actualizando constantemente la clase este vuelve a su estado por defecto
0, como debo hacer para que esto no ocurra?

Código ActionScript :

class I_A extends MovieClip
{

private var arregloBajo:Number=8.5
private var arregloDer:Number=8
private var arregloIzq:Number=-8
private var Esalta:Boolean=false
private var caminar:Boolean=false
private var dire:Number=0
private var E_gr:Number=6


public function  I_A(ENE:MovieClip)
{

if (!Esalta)
{
ENE._y +=E_gr;E_gr++;
if (E_gr>5){E_gr=4}
}


while(_root.mcSuelo.hitTest(ENE._x,ENE._y+arregloBajo,true))
{caminar= true;ENE._y--}

while(_root.mcSuelo.hitTest(ENE._x+arregloDer,ENE._y,true))
{ENE._x--;if (dire==1) {dire = 0};}

while(_root.mcSuelo.hitTest(ENE._x+arregloIzq,ENE._y,true))
{ENE._x++;if (dire==0) {dire = 1};}
cami(ENE)
}//END FUNCTION


private function cami(TIP:MovieClip)
{
   
if (caminar)
{
   
if (dire ==  1) {TIP._x+=8;TIP._xscale=100 }

if (dire ==  0) {TIP._x-=8;TIP._xscale=-100}
}



}//END FUNCTION


}//END CLASS



y desde la linea de tiempo

Código ActionScript :


var tempo:Number = setInterval( ejecutar, 100);
dire="1"
function ejecutar()

{
   new I_A(dino)
   
} 

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 01 Dic 2010 01:57 pm
Si cambias la dirección sin mover el elemento, típicamente queda "enganchado", es decir la condición siempre es true en el borde y el elemento se queda pegado, muchísimo peor si usas while.
Lo usual es chequear por condición, si es true moverlo a un lugar donde la condición sea false y luego invertir la velocidad

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 Dic 2010 12:58 am
Mas o menos te entiendo pero podrias ponerme algun ej practico?
gracias.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 02 Dic 2010 01:40 pm
Supongamos que quiero que 0,500 sean los límites en el eje x, mi MC tiene el punto de registro en el ángulo superior izquierdo, entonces

Código ActionScript :

if(miMC._x<=0){
  miMC._x = 5 //si actualiza la velocidad antes, sino un valor superior a la velocidad
} else if(mc._x>=500){
  miMC._x = 495-miMC._width //lo mismo, tener en cuenta cuando se actualiza la velocidad
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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