Comunidad de diseño web y desarrollo en internet online

Duda con MOUSE_OVER en AS3

Citar            
MensajeEscrito el 18 Abr 2011 11:42 am
Hola a todos, tengo una duda sobre como puedo controlar cuando el cursor del ratón pasa por encima de un MC en AS3. Lo que necesito hacer es que cuando el cursor pase por encima de un mc que llamo cursorOff, desaparezca y cuando salga de encima del mc, el cursor vuelva a aparecer.

He probado así:

Código:

Código ActionScript :

cursorOff.addEventListener(MouseEvent.MOUSE_OVER,cursorOver);
cursorOff.addEventListener(MouseEvent.MOUSE_OUT,cursorOut);

function cursorOver)(event:MouseEvent):void
{
mouse.hide();
}

function cursorOut)(event:MouseEvent):void
{
mouse.show();
}


Pero no funciona

¿Alguien me puede ayudar?

Gracias!

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Abr 2011 01:47 pm
Si mal no recuerdo, la clase Mouse es con M mayuscula

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Abr 2011 02:20 pm
Que es cursorOver)? tienes un parentesis de mas!

Como dice Jorge, Mouse es una clase y como tal, comienza con mayuscula.

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 20 Abr 2011 05:57 am
Es cierto lo que dice ACREONTE.
tienes un cierre demas en el parentesis:
tu codigo deberia estar asi:

Código ActionScript :

function cursorOver(event:MouseEvent):void 
{    
   Mouse.hide(); 
} 
       
function cursorOut(event:MouseEvent):void 
{ 
   Mouse.show(); 
}

Tienes que hacer el import de

Código ActionScript :

import flash.ui.Mouse;


y recien te funcionara el:

Código ActionScript :

Mouse.hide();

Por fuentessoft

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2011 08:30 am
No se por que me han salido esos paréntesis ahí, pero en mi código no están. :?

El caso es que es cierto, Mouse es con mayúscula. Sin embargo me sigue dando un par de errores.

El primero (acceso a una propiedad no definida) lo he solucionado importando la clase Mouse, pero me sigue tirando otro error:

Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Main/frame1()
at flash.display::MovieClip/gotoAndStop()
at ItemButton/set selected()
at Main()

He buscado por que sale este error y creo que es porque no existe el objeto al que se está haciendo referencia, ¿no?

¿como lo puedo solucionar?

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 Abr 2011 08:57 am
Describenos mejor que es lo que tienes donde. Tambien pon aca la clase o el script que estas utilizando para ver los elementos a los que se hace referencia.

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 20 Abr 2011 11:09 am
He cambiado un par de cosillas y ya no me da ningún error al compilar, sin embargo el mouse sigue sin desaparecer.

En un solo fotograma tengo todo los elementos. Un mc en el escenario al que le he puesto como nombre de instancia cursorOff.

De la biblioteca traigo un clip de película que sigue al cursor con este script:

Código ActionScript :

var lapiz:Lapiz = new Lapiz();
lapiz.x = 15;
lapiz.y = 207;
this.addChild(lapiz);

//Lápiz que sigue al cursor
stage.addEventListener(MouseEvent.MOUSE_MOVE,followPen);

function followPen(event:MouseEvent):void
{
   lapiz.x = mouseX;
   lapiz.y = mouseY;
}



y el script que utilizo para que el mouse desaparezca es el que está arriba, pero lo pongo aquí bien escrito:

Código ActionScript :

import flash.ui.Mouse;
var cursorOff:MovieClip;
cursorOff.addEventListener(MouseEvent.MOUSE_OVER, cursorOver);
cursorOff.addEventListener(MouseEvent.MOUSE_OUT, cursorOut);

function cursorOver(event:MouseEvent):void
{
  Mouse.hide();
  lapiz.visible = true;
}
function cursorOut(event:MouseEvent):void
{
  Mouse.show();
  lapiz.visible = false;
}


el caso es que he creado un nuevo fla y le he puesto solo el scritp y los mc necesarios para que funcione y parece que va,pero aún así el cursor aparece cada vez que se mueve el cursor sobre el mc cursorOff. :?

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 Abr 2011 12:30 pm
Borra lo que dice:

Código ActionScript :

var cursorOff:MovieClip;

porque si existe en el escenario (con su respectivo nombre de instancia) flash se puede confundir si lo declaras con script tambien.

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 20 Abr 2011 01:13 pm
Si no lo pongo me da error:

escribió:

Acceso a una propiedad cursorOff no definida

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 Abr 2011 01:45 pm
Revisa nuevamente el nombre de instancia cursorOff de ese clip que tienes en el escenario. El script debe estar en el mismo fotograma (preferiblemente todo en el fotograma 1, con un stop).
Si el script esta llamando a algo que no existe, no funcionara.

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 20 Abr 2011 02:33 pm
te sugiero que publiques la estrucutra de tu codigo y tu clase donde o usar para revisar el problema...

Por fuentessoft

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2011 03:12 pm
Bueno espero que mi respuesta no sea tarde:

me tome el tiempo para hacerte un ejemplo: (basado en un boton todo muy simple y facil de entender)

lo he echo que el cursor cambie cuando haces mouse over sobre un boton pero eso tu lo puedes cambiar sobre cualquier cosa.

en este ejemplo en mi biblioteca tengo 2 objetos (Botom) (Lapicero) los cuales los exporte para AS
y ami fla lo he apuntado a mi clase Main.as

Main.as

Código ActionScript :

package  
{
   import flash.display.MovieClip;
   import flash.events.Event;
   import flash.events.MouseEvent;
   import flash.ui.Mouse;

   public class Main extends MovieClip
   {
      private var cursorOff:Boton = new Boton;
      private var lapicero:Lapicero = new Lapicero;
      
      public function Main() 
      {
         addEventListener(Event.ADDED_TO_STAGE, onStage)
      }
      
      private function onStage(e:Event):void 
      {
         removeEventListener(Event.ADDED_TO_STAGE, onStage);
         
         cursorOff.x = (stage.stageWidth / 2 ) - (cursorOff.width / 2 );
         cursorOff.y = (stage.stageHeight / 2 ) - (cursorOff.height / 2 );
         addChild(cursorOff)
         cursorOff.addEventListener(MouseEvent.MOUSE_OVER, cursorOver); 
         cursorOff.addEventListener(MouseEvent.MOUSE_OUT, cursorOut);
         cursorOff.addEventListener(MouseEvent.MOUSE_MOVE, followPen);
      }
      
      private function followPen(e:MouseEvent):void 
      {
         lapicero.x = mouseX;
         lapicero.y = mouseY;
      }
      
      function cursorOver(event:MouseEvent):void 
      { 
         Mouse.hide();
         addChild(lapicero)
         //lapiz.visible = true; 
      } 
      
      function cursorOut(event:MouseEvent):void 
      { 
         Mouse.show();
         removeChild(lapicero)
         //lapiz.visible = false; 
      }
      
   }

}

Boton.as

Código ActionScript :

package  
{
   import flash.display.MovieClip;
   import flash.events.Event;

   public class Boton extends MovieClip
   {
      
      public function Boton() 
      {
         addEventListener(Event.ADDED_TO_STAGE, onStage)
      }
      
      private function onStage(e:Event):void 
      {
         removeEventListener(Event.ADDED_TO_STAGE, onStage);
      }
      
   }

}

Lapicero.as

Código ActionScript :

package  
{
   import flash.display.MovieClip;
   import flash.events.Event;

   public class Lapicero extends MovieClip
   {
      
      public function Lapicero() 
      {
         addEventListener(Event.ADDED_TO_STAGE, onStage)
      }
      
      private function onStage(e:Event):void 
      {
         removeEventListener(Event.ADDED_TO_STAGE, onStage);
      }
      
   }

}


hummm mejor tambien te dejo el ejemplo:

http://www.joothemes.com/as3/examples/Mouse Over.rar

como veras este ejemplo es super facil y sencillo.

Espero que te pueda servir de algo.

SALUDOS y SUERTE.

Por fuentessoft

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Abr 2011 09:33 am
Muchas gracias por tu ayuda fuentessoft, pero podrías revisar el enlace de descarga que me has puesto? no me deja descargar el archivo.

Gracias!

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Abr 2011 01:58 pm
hola, no se que pasa con firefox pero aparece solo como codigo binario.
pero prueba con el siguiente link .

http://www.joothemes.com/as3/examples/MouseOver.rar
en chrome, ie

el problema solo pasa en firefox ....
o cual es tu email para enviartelo `.....

Por fuentessoft

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 26 Abr 2011 07:48 am
Muchisimas gracias por tu ayuda fuentessoft ya he coseguido avanzar con esto. También estoy buscando información sobre el display list, que es lo que no entendía de AS3 y buscando ejemplos por la web me he dado cuenta de que ya no puedo pensar más como en as2 sobre rutas y demás cosas. Ahora todo a cambiado.

Un saludo.

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Abr 2011 01:58 pm

Por fuentessoft

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Abr 2011 09:20 am
Ok, lo voy a leer ahora mismo.

Gracias!!

Por plug

78 de clabLevel



Genero:Masculino  

firefox

 

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