Comunidad de diseño web y desarrollo en internet online

Anular eventos del ratón

Citar            
MensajeEscrito el 30 Ago 2006 11:27 pm
Hola,

Me gustaría saber si hay alguna forma de anular temporalmente los eventos del ratón.

Los desactivé con: boton_btn.onRollOver = null; pero no sé como contrarestar ese null...

Hice un boton_btn.enabled = false; pero no me lo anula...

Para dar una pista, diré que quiero que el botón no detecte al ratón hasta que se me haya cargado un movieclip.

Saludos!!

Por Sandwichera

11 de clabLevel



 

msie
Citar            
MensajeEscrito el 31 Ago 2006 01:07 am

Sandwichera escribió:

Hice un boton_btn.enabled = false; pero no me lo anula...

le estaras indicando mal la ruta?

Por Mariux

BOFH

7756 de clabLevel

28 tutoriales
15 articulos

Genero:Femenino   Héroes Editores

Diseñadora & ilustradora

firefox
Citar            
MensajeEscrito el 31 Ago 2006 03:54 am
Haz una función que anule el evento y otra que lo cree de nuevo, es decir:

Código :

function anularEvento(){
  boton_btn.onRollOver = null;
}

y otra con la definición de ese evento:

Código :

function crearRollOver(){
  boton_btn.onRollOver = function()
  {
    trace("Vuelvo a ser útil");
  }
}


Asignándole null en realidad lo único que haces es eliminar la definición del evento, por lo que es necesario definirlo de nuevo para volver a utilizarlo.

Un saludo

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 31 Ago 2006 01:34 pm
Hola otra vez,

Lo primero gracias a [Sheer] por su ayuda :D

Lo malo es que sólo funciona en el primer press y si vuelvo a darle al botón ya no va. Por éso, he preparado una versión de prueba para subirla y además pego el código para que sea más rápido de ver.

http://www.telefonica.net/web2/paquiportfolio/intentando/intentando.html

Ése es el ejemplo puesto tal cual y aquí va el código:

Código :

stop();
var easing:Number = 0.1;
var targetX:Number = 206;
var targetY:Number = 85;
var targetXscale:Number = 500;
var targetYscale:Number = 500;
function startPreload(url) {
   cortinaseccion_mc.url = url;
   cortinaseccion_mc.target = fondoContenido_mc;
   cortinaseccion_mc.gotoAndPlay(2);
}
_root.globoLo_mc._visible = false;
logo_mc.onRollOver = function() {
   globoLo_mc._visible = true;
   logo_mc.gotoAndStop(2);
   if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
      globoLo_mc._x = _root._xmouse-21;
      globoLo_mc._y = _root._ymouse-85;
      globoLo_mc._xscale = 100;
      globoLo_mc._yscale = 100;
      updateAfterEvent();
      globoLo_mc.play();
   }
};
logo_mc.onMouseMove = function() {
   globoLo_mc._x = _root._xmouse-21;
   globoLo_mc._y = _root._ymouse-85;
   updateAfterEvent();
};
logo_mc.onRollOut = function() {
   logo_mc.gotoAndStop(1);
   globoLo_mc._visible = false;
   globoLo_mc.gotoAndStop(1);
};
logo_mc.onPress = function() {
   globoLo_mc.gotoAndPlay(31);
   globoLo_mc.onEnterFrame = ease;
   function ease() {
      var dx:Number = targetX-this._x;
      var dy:Number = targetY-this._y;
      var dxs:Number = targetXscale-this._xscale;
      var dys:Number = targetYscale-this._yscale;
      if (Math.abs(dx)<1) {
         this._x = targetX;
         this._y = targetY;
         this._xscale = targetXscale;
         this._yscale = targetYscale;
         //trace("diana lo consegui");
         delete this.onEnterFrame;
         globoLo_mc._visible = false;
         myhola_mc._visible = false;
         startPreload("seccion.swf");
         globoLo_mc.gotoAndStop(1);
      } else {
         var vx:Number = dx*easing;
         var vy:Number = dy*easing;
         var vxs:Number = dxs*easing;
         var vys:Number = dys*easing;
         this._x += vx;
         this._y += vy;
         this._xscale += vxs;
         this._yscale += vys;
      }
   }
};
logo_mc.onRelease = function() {
   this.onEnterFrame = function() {
      var bytesloaded = cortinaseccion_mc.target.getBytesLoaded();
      var bytestotal = cortinaseccion_mc.target.getBytesTotal();
      var percentloaded = bytesloaded/bytestotal;
      function anularEvento() {
         logo_mc.onRollOver = null;
         logo_mc.onRollOut = null;
         logo_mc.onMouseMove = null;
      }
      function crearRollOver() {
         logo_mc.onRollOver = function() {
            globoLo_mc._visible = true;
            logo_mc.gotoAndStop(2);
            if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
               globoLo_mc._x = _root._xmouse-21;
               globoLo_mc._y = _root._ymouse-85;
               globoLo_mc._xscale = 100;
               globoLo_mc._yscale = 100;
               updateAfterEvent();
               globoLo_mc.play();
            }
         };
      }
      function crearRollOut() {
         logo_mc.onRollOut = function() {
            logo_mc.gotoAndStop(1);
            globoLo_mc._visible = false;
            globoLo_mc.gotoAndStop(1);
         };
      }
      function crearMouseMove() {
         logo_mc.onMouseMove = function() {
            globoLo_mc._x = _root._xmouse-21;
            globoLo_mc._y = _root._ymouse-85;
            updateAfterEvent();
         };
      }
      if (percentloaded != 1) {
         anularEvento();
      } else {
         crearRollOver();
         crearRollOut();
         crearMouseMove();
         delete onEnterFrame;
      }
   };
};


Espero que me empeceis a sacar fallos uno tras otro porque me da la sensación de que este código es de lo menos limpio...

Saludos!!

Por Sandwichera

11 de clabLevel



 

msie
Citar            
MensajeEscrito el 31 Ago 2006 07:05 pm
Mira si este mensaje te da ideas para solucionar tu problema.

http://www.cristalab.com/foros/viewtopic.php?t=26027&highlight=

Por antonio_L

161 de clabLevel



Genero:Masculino  

de Linares

firefox
Citar            
MensajeEscrito el 31 Ago 2006 09:31 pm
Hola otra vez!!

Antonio_L muchas gracias por ese enlace. En él se plantean cosas que desconocía y voy a estudiarlo ahora con detenimiento. Lo cierto es que podría intentar desactivar los eventos de ratón hasta que se haya terminado de cargar la movie externa y además desactivar el botón hasta que otro botón sea Press... bueno... al menos eso es lo que yo me he imaginado, luego me daré de cabezazos :lol:

Por otro lado, y viendo la cantidad de líneas tan ingente sólo para un botón (y son 5), se me plantea lo siguiente: ¿estoy haciendo bien en volver a escribir las acciones que tenían los eventos deshabilitados cuando los vuelvo a habilitar? Es que está todo por duplicado... No me importa escribir dos mil líneas al día, lo digo por hacer las cosas bien.

Muchas gracias de nuevo y hasta luego!!

Por Sandwichera

11 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 Sep 2006 07:44 am
La verdad yo me plantearía reestructurar el código de otra manera, las funciones las crearía fuera de los eventos, las crearía para que admitieran parámetros y, por ejemplo crearía una funcion de precarga que admitiera como parámetro (por ejemplo, el nombre de la película a cargar), dentro de esta funcion, inhabilitaría los botones hasta que estubiera cargada, que los volvería a rehabilitar una vez cargada, esta funcion sería llamada desde cada botón, bueno no sé, creo que el código que tienes admite muchas mejoras, estudia bien el caso y actua en consecuencia.
Pero ten en cuenta una cosa, que si solo pretendes inhabilitar y habilitar botones no necesitas de rutinas complicadas para habilitar:

Código :

nombreBoton_btn.enabled=true

Para inhabilitar:

Código :

nombreBoton_btn.enabled=false

Por antonio_L

161 de clabLevel



Genero:Masculino  

de Linares

firefox
Citar            
MensajeEscrito el 01 Sep 2006 12:33 pm
Buenas tardes!!

Antonio_L, muchas gracias por tus directivas porque, aunque deje aparcado mi proyecto por ahora, ya sé qué tengo que estudiar a continuación. ¿Mejoras? :lol: Todo ese código son cosas de aquí y allá que he ido pillando de libros e internet, cortadas, pegadas y adaptadas. Ese es el problema de todo: yo no tengo ni idea de programar, sólo entiendo lo que ya sé y, a pesar de haber llegado mucho más allá de lo que en un principio pensé al enfrascarme en tan complejo proyecto, siento que el siguiente paso que me propones está "beyond my scope" porque me compré libros de Flash pero no de AS con lo que mis conocimientos son generales. Pero no dudes que desde hoy, todos los ratos libres que pille, los dedicaré al estudio de funciones personalizadas con parámetros.

Lo que está claro es que el bendito día que consiga que el globo que se pega al cursor cuando uno se pone encima del botón, crezca y se situe en un punto determinado para cargar una película externa tras una transición, y que mientras no se haga RollOver otro botón, no se reactive... ese gran día prepararé un tutorial par que los que vengan detrás (igual nietos) no se den todos los cabezazos que me he dado yo.

Reitero mi agradecimiento por tu ayuda y consejos :D

Por Sandwichera

11 de clabLevel



 

msie

 

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