package com.cursormanager { import flash.events.Event; import flash.display.DisplayObjectContainer; import flash.display.DisplayObject; import flash.display.Sprite; import com.cursormanager.cursors.Cursor; import flash.ui.Mouse; import flash.events.MouseEvent; public class CursorManager { private var enabled:Boolean = true; public function get isEnabled():Boolean { return enabled; } private var _cursor:DisplayObjectContainer; /** * A display object which contains the cursor, used to bring the cursor to the screen. */ public function get cursor():DisplayObject { return _cursor; } private var currentCursor:Cursor; public function CursorManager() { createCursorContainer(); handleCursorEvent( new CursorEvent( CursorEvent.DEFAULT ) ); } public function enable():void { enabled = true; currentCursor.enable(); } public function disable():void { enabled = false; currentCursor.disable(); currentCursor.visible = false; Mouse.show(); // make sure we don't leave the user with no cursor } public function handleCursorEvent( event:CursorEvent ):void { if ( currentCursor ) { currentCursor.disable(); _cursor.removeChild( currentCursor ); } currentCursor = event.cursor; _cursor.addChild( currentCursor ); } private function createCursorContainer():void { _cursor = new Sprite(); } } }