Comunidad de diseño web y desarrollo en internet online

Menu desplegable con error

Citar            
MensajeEscrito el 24 Jul 2007 02:55 pm
Hola a todos, Estoy con un problemon.

Y el link del swf. http://www.nuevomundo.com.br/descarga/abrir_suave/abrir_suave_v3.html

El problema es casi imperceptible pero es grave, sucede que cuando pasas el mouse rapidamente por encima del algun rectangulo varias veces el se mueve para atras.

Lo que me imagino es que cuando ejecuta la funcion el "numM" queda en -5 y no da tiempo a el cronometro contabilizar. Mi conometro es el Array numRef. En pocas palabras numRef me va a contar cuantas veces tiene que ir para adelante y cuantas para atras.

Cuando numRef esté en 15 va a parar y cuando este en 0 tambien, es asi que controlo el stop del eje x.

Si alguien tiene alguna sugerencia estoy abierto a cualquier opinion.

Dejo a dispocicion el codigo:

Código :

var numRef:Array = Array();
var num:Array = Array();
numRef[0] = 0;
numRef[1] = 0;
numRef[2] = 0;
numRef[3] = 0;
num[0] = 0;
num[1] = 0;
num[2] = 0;
num[3] = 0;
function mover(nome:String, numM:Number) {
   var nomePos:String;
   nomePos = nome.slice(4, 6);
   _root.num[nomePos] = numM;
   this[nome].onEnterFrame = function() {
      if (_root.num[nomePos]>0) {
         this._x += (_root.num[nomePos]+10);
         _root.numRef[nomePos]++;
      }
      if (_root.num[nomePos]<0) {
         this._x += (_root.num[nomePos]-10);
         _root.numRef[nomePos]--;
      }
// cuando numRef esté en 15 va a parar y cuando este en 0 tambien, es asi que controlo el stop 
      if (_root.numRef[nomePos]>=15 || _root.numRef[nomePos]<=0) {
         delete this.onEnterFrame;
      }
   };
}
_root.mc_a1.onRollOver = function() {
   _root.mover(this._name, 5);
};
_root.mc_a1.onRollOut = function() {
   _root.mover(this._name, -5);
};
_root.mc_a2.onRollOver = function() {
   _root.mover(this._name, 5);
};
_root.mc_a2.onRollOut = function() {
   _root.mover(this._name, -5);
};
_root.mc_a3.onRollOver = function() {
   _root.mover(this._name, 5);
};
_root.mc_a3.onRollOut = function() {
   _root.mover(this._name, -5);
};


Saludos a todos.

Por Leafs

13 de clabLevel



 

opera
Citar            
MensajeEscrito el 24 Jul 2007 06:21 pm
Les agradesco de cualquier manera.

Consegui resolver mi problema.

Que sucede? Cuando yo saco el mouse primero el hace el movimiento y depues comienza el conteo de "numRef", la solucion era no dejar se mover para atras cuando numRef sea = 0,

Dejo el codigo corregido, para quien quiera usarlo

Código :

    var numRef:Array = Array();
var num:Array = Array();
numRef[0] = 0;
numRef[1] = 0;
numRef[2] = 0;
numRef[3] = 0;
num[0] = 0;
num[1] = 0;
num[2] = 0;
num[3] = 0;
function mover(nome:String, numM:Number) {
   var nomePos:String;
   nomePos = nome.slice(4, 6);
   _root.num[nomePos] = numM;
   this[nome].onEnterFrame = function() {
      if (_root.num[nomePos]>0) {
         this._x += (_root.num[nomePos]+10);
         _root.numRef[nomePos]++;
      }
/*
 _root.numRef[nomePos] != 0 <-- es la solucion de mis problemas. Si _root.numRef es igual a cero 
el no se va a mover pero si es diferente si.
*/
      if (_root.num[nomePos]<0 && _root.numRef[nomePos] != 0) {
         this._x += (_root.num[nomePos]-10);
         _root.numRef[nomePos]--;
      }
      if (_root.numRef[nomePos]>=15 || _root.numRef[nomePos]<=0) {
         trace(numRef[nomePos]);
         delete this.onEnterFrame;
      }
   };
}
_root.mc_a1.onRollOver = function() {
   _root.mover(this._name, 5);
};
_root.mc_a1.onRollOut = function() {
   _root.mover(this._name, -5);
};
_root.mc_a2.onRollOver = function() {
   _root.mover(this._name, 5);
};
_root.mc_a2.onRollOut = function() {
   _root.mover(this._name, -5);
};
_root.mc_a3.onRollOver = function() {
   _root.mover(this._name, 5);
};
_root.mc_a3.onRollOut = function() {
   _root.mover(this._name, -5);
};



Saludos a todos.

Por Leafs

13 de clabLevel



 

opera

 

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