este es el codigo:
Código ActionScript :
var d=1; _root.createEmptyMovieClip("esenario",d++); var juego=new Object(); juego.clip=_root.esenario; juego.X=0; juego.Y=0; juego.velocidad=10; juego.distanciaMaxima=200; juego.distanciaMinima=20; juego.clip.attachMovie("riku","riku",d++); juego.clip.attachMovie("sora","sora",d++); juego.sora=new Object(); juego.sora.clip=juego.clip.sora; juego.sora.clip._x=100; juego.sora.clip._y=100; juego.sora.X=300; juego.sora.Y=200; juego.sora.velocidad=10; _root.onEnterFrame=function(){ var ratonX=_xmouse-juego.X; var ratonY=_ymouse-juego.Y; /////////// // parte problematica mover2(juego.sora,juego,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"X",true); mover2(juego.sora,juego,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"Y",true); mover(juego.sora,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"X"); mover(juego.sora,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"Y"); /* if(mover(juego.sora,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"X") && mover(juego.sora,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"Y") ){ trace(true); }*/ ////////////////// juego.clip._x=juego.X; juego.clip._y=juego.Y; juego.sora.clip._x=juego.sora.X-25; juego.sora.clip._y=juego.sora.Y-30; } function mover(objeto:Object,DX:Number,DY:Number,distanciaMaxima:Number,distanciaMinima:Number,eje:String,invertido:Boolean){ if(invertido){ var distanciaX=-(DX-objeto.X); var distanciaY=-(DY-objeto.Y); }else{ var distanciaX= DX - objeto.X; var distanciaY= DY - objeto.Y; } if(Math.abs(distanciaX)< distanciaMaxima/3){ var cambio=6; } else if(Math.abs(distanciaX)< 2*distanciaMaxima/3 && Math.abs(distanciaX)> distanciaMaxima/3){ var cambio=4; } else if(Math.abs(distanciaX)> 2*distanciaMaxima/3){ var cambio=1; } var direccion=distanciaX/Math.abs(distanciaX); if(eje=="X"){ if(Math.abs(distanciaX)>distanciaMinima){ objeto.X+=direccion*objeto.velocidad/cambio; } else{return(true);} } /////// if(Math.abs(distanciaY)< distanciaMaxima/3){ var cambio=6; } else if(Math.abs(distanciaY)< 2*distanciaMaxima/3 && Math.abs(distanciaY)> distanciaMaxima/3){ var cambio=4; } else if(Math.abs(distanciaY)> 2*distanciaMaxima/3){ var cambio=1; } var direccion=distanciaY/Math.abs(distanciaY); if(eje=="Y"){ if(Math.abs(distanciaY)>distanciaMinima){ objeto.Y+=direccion*objeto.velocidad/cambio; } else{return(true);} } } function mover2(objeto:Object,objeto2:Object,DX:Number,DY:Number,distanciaMaxima:Number,distanciaMinima:Number,eje:String,invertido:Boolean){ if(invertido){ var distanciaX=-(DX-objeto.X); var distanciaY=-(DY-objeto.Y); }else{ var distanciaX= DX - objeto.X; var distanciaY= DY - objeto.Y; } if(eje=="X"){ if(Math.abs(distanciaX)< distanciaMaxima/3){ var cambio=6; } else if(Math.abs(distanciaX)< 2*distanciaMaxima/3 && Math.abs(distanciaX)> distanciaMaxima/3){ var cambio=4; } else if(Math.abs(distanciaX)> 2*distanciaMaxima/3){ var cambio=1; } var direccion=distanciaX/Math.abs(distanciaX); if(Math.abs(distanciaX)>distanciaMinima){ objeto2.X+=direccion*objeto.velocidad/cambio; } else{return(true);} } /////// if(eje=="Y"){ if(Math.abs(distanciaY)< distanciaMaxima/3){ var cambio=6; } else if(Math.abs(distanciaY)< 2*distanciaMaxima/3 && Math.abs(distanciaY)> distanciaMaxima/3){ var cambio=4; } else if(Math.abs(distanciaY)> 2*distanciaMaxima/3){ var cambio=1; } var direccion=distanciaY/Math.abs(distanciaY); if(Math.abs(distanciaY)>distanciaMinima){ objeto2.Y+=direccion*objeto.velocidad/cambio; } else{return(true);} } }
le codigo es parte de un juego y se encarga de mover al personaje "sora" tomando como referencia al mouse. pero en realidad "sora" no se mueve sino que se mueve "riku" (que representa el esenario) al contrario de "sora"
el codigo funciona bien hasta ahora, pero si cambio esta parte:
Código ActionScript :
mover2(juego.sora,juego,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"X",true); mover2(juego.sora,juego,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"Y",true); mover(juego.sora,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"X"); mover(juego.sora,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"Y");
por esta otra:
Código ActionScript :
mover2(juego.sora,juego,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"X",true); mover2(juego.sora,juego,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"Y",true); if(mover(juego.sora,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"X") && mover(juego.sora,ratonX,ratonY,juego.distanciaMaxima,juego.distanciaMinima,"Y") ){ trace(true); }
entonces "sora" y "riku" se mueven de manera extraña
que estoy haciendo mal?
gracias de antemano.
nota: el codigo esta completo y si lo copian y vinculan dos clip en la biblioteca con los nombres de "sora" y de "riku" el codigo debería funcionar justo como a mi.