Problema con un código (onMouseDown)
Hola, tengo un problema con un código de Action Script que estoy usando. Decir que el código lo he sacado de un fla que me he descargado de un site. Al publicar el fla y hacer click con el ratón unas hormigas se mueven aleatoriamente por la pantalla. Hasta aquí todo va bien el problema está en que cuando vuelvo a hacer click las hormigas desaparecen y se vuelve a iniciar todo apareciendo nuevas hormigas.
He estudiado el código y lo entiendo bien, se como ocurren las cosas, pero me gustaría que al volver a hacer click no pasase nada, es decir, que no desaparezcan las hormigas. He estado investigando pero no se como hacerlo ¿Alguna ayuda?
He aquí el código:
<code>
Stage.align = "TL";
Math.randRange = function(min, max, nbDecimales) {
//te saca un numero aleatorio de un rango
//myMovieClip._alpha = Math.randRange(75, 100);
//el alpha sera entre 75 y 100
var diffPlage = (max - min) * Math.pow(100, nbDecimales) + 1;
var valAleatoire = Math.random() * diffPlage;
valAleatoire = Math.floor(valAleatoire);
valAleatoire /= Math.pow(100, nbDecimales);
valAleatoire += min;
return valAleatoire;
}
//convertidor de grados <--> radianes
Math.radian =function(grados) {return grados*(Math.PI/180);}
Math.grados = function(radian) {return radian*(180/Math.PI);}
//movimiento de las hormigas
MovieClip.prototype.hormiga = function() {
this.radioEscape = 0;
this.distance = 0;
this.anguloAleatorio =3;
this.radioNormal =10;
this.onEnterFrame = function() {
//declarando variables locales
var mx,my;
//calculando la diferencia de el raton a la hormiga
var xdiff = _root._xmouse-this._x;
var ydiff = _root._ymouse-this._y;
var dist = Math.sqrt(xdiff*xdiff+ydiff*ydiff);
//cuando la hormiga esta demasiado cerca de el raton
if (dist<this.distance) {
//repulsion o atracion
//calculando el angulo de el raton respecto a la hormiga
this.angulo = Math.atan2(ydiff, xdiff);
//calculando su nueva posicion
mx = this._x - Math.cos(this.angulo)*this.radioEscape;
my = this._y - Math.sin(this.angulo)*this.radioEscape;
//haciendo media vuelta
this.angulo = Math.grados(this.angulo)+180;
//matando a la hormiga
if (dist<10) {
delete this.onEnterFrame;
this.gotoAndStop(2);
}
} else {
//movimiento sacado de un proto fly() de pxl
//cuando es 0 o sea false de un rango de 0 a 2
if (!Math.randRange(0,10000000)) {
//detenemos la hormiga
this.radio = 0;
} else {
//velocidad variable de 2<-->radioNormal
this.radio = Math.randRange(4,this.radioNormal);
//si va a la derecha o a la izquierda en un rango de -anguloAleatorio<-->anguloAleatorio
this.angulo += Math.randRange(-this.anguloAleatorio,this.anguloAleatorio);
}
//calculando su nueva posicion
mx = this._x+Math.cos(Math.radian(this.angulo))*this.radio;
my = this._y+Math.sin(Math.radian(this.angulo))*this.radio;
}
//limites de el terreno
//no sea q os escape por casa
if (mx<0>Stage.width)mx = 0;
if (my<0>Stage.height)my = 0;
//moviendo
this._x = mx;
this._y = my;
this._rotation = this.angulo;
};
};
function hormiguero(num){
for (var i = 0; i<num; i++) {
var mc = this.attachMovie("hormiga", "hormiga"+i, i+0);
mc._x = 0;
mc._y = Stage.height/2;
mc.hormiga();
Mouse.removeListener(hormiga);
}
}
this.onMouseDown=function(){
hormiguero(10);
}
</code>
damianmuti
Querido daf, me alegra q te haya funcionado, y a ver cuando te pegas una vuelta por Works Check para mostrar como te ha quedado! :P
Saludos.
daf77
damianmuti calculas muy bien, ha quedado perfecto, casi me echo a llorar cuando he publicado el fla y he comprobado que las hormiguitas seguían moviendose por mi pantalla.
Gracias, te debo una.
Saludos
damianmuti
Calculo q con un:
<code>
this.onMouseUp = function(){
this.onMouseDown = null;
}
</code>
Con eso, al levantar el dedo, luego de presionar el boton del mouse (onMouseDown, q es cuando se ejecuta la accion de las hormiguitas :)) anularías los subsiguientes eventos de onMouseDown con respecto a ésta función en particular.
Prueba, y sinó, avisa q aquí estaremos. :)
Saludos.
PD: Ponlo absolutamente después del onMouseDown.