package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.ColorTransform; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; [SWF(width = "250", height = "200", frameRate = "30")] public class MouseLeaveTest extends Sprite { private var _tf1:TextField; private var _tf2:TextField; private var _button:Sprite; private var _pressColor:ColorTransform; private var _upColor:ColorTransform; public function MouseLeaveTest() { _pressColor = new ColorTransform(); _pressColor.color = 0xFF8800; _upColor = new ColorTransform(); _upColor.color = 0x2F73F0; //背景 var bg:Sprite = addChild(new Sprite()) as Sprite; bg.graphics.beginFill(0xffffff, 0.5); bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); bg.graphics.endFill(); //メッセージ _tf1 = addChild(new TextField()) as TextField; _tf2 = addChild(new TextField()) as TextField; _tf1.defaultTextFormat = _tf2.defaultTextFormat = new TextFormat("Courier New", 12, 0); _tf1.selectable = _tf2.selectable = false; _tf1.width = _tf2.width = stage.stageWidth; _tf2.wordWrap = true; _tf2.y = 16; message("MOUSE_LEAVEイベント取れるかな"); //ボタン _button = addChild(new Sprite()) as Sprite; _button.graphics.beginFill(0x444444, 1); _button.graphics.drawRoundRect(0, 0, 100, 100, 10, 10); _button.graphics.endFill(); _button.x = 75; _button.y = 50; _button.buttonMode = true; _button.addEventListener(MouseEvent.MOUSE_DOWN, onPress); stage.addEventListener(MouseEvent.MOUSE_UP, onStageUp); stage.addEventListener(Event.MOUSE_LEAVE, onMouseLeave); } private function onPress(e:MouseEvent):void { log("Button:MouseEvent.MOUSE_DOWN"); _button.transform.colorTransform = _pressColor; } private function onStageUp(e:MouseEvent):void { log("Stage:MouseEvent.MOUSE_UP"); _button.transform.colorTransform = _upColor; } private function onMouseLeave(e:Event):void { message("マウスがSWF領域から外れました"); log("Stage:Event.MOUSE_LEAVE"); _button.transform.colorTransform = _upColor; stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } private function onMouseMove(e:MouseEvent):void { message("マウスがSWF領域内に入りました"); log("Stage:MouseEvent.MOUSE_MOVE"); stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } public function message(str:String):void { _tf1.text = str; } public function log(str:String):void { _tf2.text = str; } } }