Cristalab

                 ¿Quieres registrarte?

Simular eventos de rollOver y rollOut con hitTest()

Por: penHolder
9 de Julio del 2007
2731 de clabLevel
Otros artículos de penHolder
8,515 visitas

En este tip voy a explicar como usar hitTest en lugar del clasico rollOver y rollOut, ya q con htiTest() obtenemos un código de lectura mas rápida.

Usualmente si quisiéramos hacer un típico botón con fade haríamos lo siguiente:

Código :

btn.onEnterFrame = function (){
   this._alpha += (this.transparencia - this._alpha) /6;
}
btn.onRollOver = function (){
   this.transparencia = 75;
}
btn.onRollOut = onReleaseOutside = function (){
   this.transparencia = 100;
}

En este caso no habría mucho problema. Pero, si la animación es mas compleja habría problemas si pasamos el cursor muy rápido, y más si se usa gotoAndPlay()

Ahora con hitTest haríamos lo siguiente:

Código :

btn.onEnterFrame = function (){
    this._alpha += (this.transparencia - this._alpha) /6;

    //si el cursor esta sobre el boton la transparencia es de 75
    if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
      this.transparencia = 75;
    //si no vuelve a 100
   } else{
      this.transparencia = 100;
   }
}

Si quisiéramos darle acciones al clickear usamos onMouseDown

Código :

btn.onMouseDown = function (){
   if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
      trace("hola mundo");
        } 
}

De esta forma tampoco veríamos la clásica "manito" de los botones, pero no tenemos mas que habilitarla cuando el cursor esta sobre el botón

Código :

useHandCursor = true;


Artículos Relacionados


Etiquetas actionscript

Comentarios | Enviar un comentario
Vale aclarar que manejando un condicional más y una variable se puede hacer un botón animado (la variable se puede sustituir por una corroboración del fotograma actual).
Por: HernanRivas
Yo también use Hittest para simular el comportamiento de un boton, pero no lo use dento de onEnterFrame,ya que utilizas demasiados recursos del sistema, en ves de eso, creo un Array en donde tengo los movie clips que quiero que tengan dicho comportamiento, un loop for que recorre dichos MC dentro de una función

function chechPos (){
for (a in hitCiudad){if(hitCiudad[a].hitTest(_xmouse,_ymouse,1)){
cambiarColor(textCiudad[a],100,0xff0000);
}else{
cambiarColor(textCiudad[a],100,0x660000);
};//if
};//for;
};//function chechPos

dicha funcion la llamao desde un evento

textCiudad[0].onMouseMove = function (){
chechPos ();
updateAfterEvent();
};//mouseMove
Por: Ricardo Zacarias-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.