Los clics del ratón crean eventos de ratón que pueden utilizarse para activar la funcionalidad de interacción. Se puede añadir un detector de eventos al objeto Stage para detectar los eventos de ratón que se produzcan en cualquier parte del archivo SWF. También se pueden añadir detectores de eventos a objetos del escenario que heredan de InteractiveObject (por ejemplo, Sprite o MovieClip); estos detectores se activan cuando se hace clic en el objeto.
Tal y como sucede con los eventos de teclado, los eventos de ratón se propagarán. En el siguiente ejemplo, dado que
square
es un objeto secundario de Stage, el evento se distribuirá tanto desde el objeto Sprite
square
como desde el objeto Stage cuando se haga clic en el cuadrado:
var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF0000);
square.graphics.drawRect(0,0,100,100);
square.graphics.endFill();
square.addEventListener(MouseEvent.CLICK, reportClick);
square.x =
square.y = 50;
addChild(square);
stage.addEventListener(MouseEvent.CLICK, reportClick);
function reportClick(event:MouseEvent):void
{
trace(event.currentTarget.toString() + " dispatches MouseEvent. Local coords [" + event.localX + "," + event.localY + "] Stage coords [" + event.stageX + "," + event.stageY + "]");
}
En el ejemplo anterior, el evento de ratón contiene información de posición sobre el clic. Las propiedades
localX
y
localY
contienen la ubicación donde tuvo lugar el clic en el objeto secundario inferior de la cadena de visualización. Por ejemplo, si se hace clic en la esquina superior izquierda de
square
, se notifican las coordenadas locales [0,0], ya que es el punto de registro de
square
. Como alternativa, las propiedades
stageX
y
stageY
hacen referencia a las coordenadas globales del clic en el escenario. El mismo clic notifica [50,50] para estas coordenadas, ya que
square
se movió a estas coordenadas. Ambos pares de coordenadas pueden ser útiles, dependiendo de cómo se desee responder a la interacción del usuario.
Nota:
en modo de pantalla completa, es posible configurar la aplicación para usar el bloqueo del ratón. El bloqueo del ratón desactiva el cursor y permite el movimiento ilimitado del ratón. Para obtener más información, consulte
Trabajo con el modo de pantalla completa
.
El objeto MouseEvent también contiene las propiedades booleanas
altKey
,
ctrlKey
y
shiftKey
. Se pueden utilizar estas propiedades para comprobar si también se está pulsando la tecla Alt, Ctrl o Mayús a la vez que se hace clic con el ratón.
Arrastre de objetos Sprites alrededor del escenario
Puede permitir a los usuarios arrastrar un objeto Sprite alrededor del escenario utilizando el método
startDrag()
de la clase Sprite. Esto se muestra en el siguiente ejemplo de código:
import flash.display.Sprite;
import flash.events.MouseEvent;
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(0, 0, 40);
var target1:Sprite = new Sprite();
target1.graphics.beginFill(0xCCFF00);
target1.graphics.drawRect(0, 0, 100, 100);
target1.name = "target1";
var target2:Sprite = new Sprite();
target2.graphics.beginFill(0xCCFF00);
target2.graphics.drawRect(0, 200, 100, 100);
target2.name = "target2";
addChild(target1);
addChild(target2);
addChild(circle);
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)
function mouseDown(event:MouseEvent):void
{
circle.startDrag();
}
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
function mouseReleased(event:MouseEvent):void
{
circle.stopDrag();
trace(circle.dropTarget.name);
}
Para obtener más información, consulte la sección sobre la creación de interacción con el arrastre de ratón en
Cambio de posición
.
Arrastrar y colocar en AIR
En Adobe AIR, se puede habilitar la compatibilidad con las operaciones de arrastrar y colocar para que los usuarios puedan arrastrar datos dentro y fuera de la aplicación. Para obtener más información, consulte
Operación de arrastrar y colocar en AIR
.
Personalización del cursor del ratón
El cursor (puntero) del ratón puede ocultarse o cambiarse por cualquier objeto de visualización en el escenario. Para ocultar el cursor del ratón, es necesario llamar al método
Mouse.hide()
. Para personalizar el cursor hay que llamar a
Mouse.hide()
, detectar el evento
MouseEvent.MOUSE_MOVE
en el objeto Stage y establecer las coordenadas de un objeto de visualización (el cursor personalizado) en las propiedades
stageX
y
stageY
del evento. El ejemplo siguiente muestra una ejecución básica de esta tarea:
var cursor:Sprite = new Sprite();
cursor.graphics.beginFill(0x000000);
cursor.graphics.drawCircle(0,0,20);
cursor.graphics.endFill();
addChild(cursor);
stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor);
Mouse.hide();
function redrawCursor(event:MouseEvent):void
{
cursor.x = event.stageX;
cursor.y = event.stageY;
}