Simple example shows how to change Mouse-Pointer in Action-Script3
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.ui.Mouse;
public class SwitchOutPointer extends Sprite
{
private var circleMouse:Sprite;
private var squareMouse:Sprite;
private var currentMouse:Sprite;
private var useSquareField:Sprite;
private var useCircleField:Sprite;
public function SwitchOutPointer()
{
super();
useSquareField = new Sprite();
useSquareField.graphics.beginFill(0xFAAAAF, 1);
useSquareField.graphics.drawRect(0, 0, 100, 100);
useSquareField.graphics.endFill();
useSquareField.name = "square";
useSquareField.x = 200;
useCircleField = new Sprite();
useCircleField.graphics.beginFill(0x543454, 1);
useCircleField.graphics.drawRect(0, 0, 100, 100);
useCircleField.name = "circle";
useCircleField.graphics.endFill();
addChild(useCircleField);
addChild(useSquareField);
//here I add my event listeners to the respective sprites
useCircleField.addEventListener(MouseEvent.ROLL_OVER, useCircle);
useSquareField.addEventListener(MouseEvent.ROLL_OVER, useSquare);
useCircleField.addEventListener(MouseEvent.ROLL_OUT, showMouse);
useSquareField.addEventListener(MouseEvent.ROLL_OUT, showMouse);
//now I'm creating the object thats going to replace
//my mouse when we're over certain sprites
circleMouse = new Sprite();
circleMouse.graphics.beginFill(0x00ff00, 1);
circleMouse.graphics.drawCircle(0, 0, 5);
circleMouse.graphics.endFill();
currentMouse = new Sprite();
squareMouse = new Sprite();
squareMouse.graphics.beginFill(0xff0000, 1);
squareMouse.graphics.drawRect(0, 0, 10, 10);
squareMouse.graphics.endFill();
//now I want to listen to ALL mouse movement events
//so that I can reposition the mouse
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveNewMouse);
}
/* move whatever mouse is the current mouse to the mouse's stage
* position. note how I offset the position slightly this is because
* the rollOff event of the useSquareField and useCircleField will be
* fired if the circleMouse or squareMouse object is in between the
* mouse and the useSquareField or useCircleField object. */
private function moveNewMouse(mouseEvent:MouseEvent):void
{
currentMouse.x = mouseEvent.stageX + 5;
currentMouse.y = mouseEvent.stageY + 5;
mouseEvent.updateAfterEvent();
}
private function useSquare(mouseEvent:MouseEvent):void
{
Mouse.hide();
addChild(squareMouse);
currentMouse = squareMouse;
}
private function useCircle(mouseEvent:MouseEvent):void
{
Mouse.hide();
addChild(circleMouse);
currentMouse = circleMouse;
}
/* if we roll off, then go ahead and remove respective icon
* for the mouse using the target property to figure out which
* one it was and show the normal mouse icon. */
private function showMouse(mouseEvent:MouseEvent):void
{
if((mouseEvent.target as Sprite) == useSquareField)
{
removeChild(squareMouse);
}
else {
removeChild(circleMouse);
}
currentMouse = new Sprite();
Mouse.show();
}
}
}
Thursday, March 11, 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment