mouseover と rollover の違い
を理解しようとテストswfを作ってみた。
http://park.geocities.jp/mxmlc/misc/MouseEventTest.html
// MouseEventTest.as package { import flash.display.*; import flash.events.*; import flash.text.*; public class MouseEventTest extends Sprite { private var tf:TextField; private var sp1:Sprite; private var sp2:Sprite; function MouseEventTest():void { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; stage.addEventListener(Event.RESIZE, function (ev:Event):void { tf.height = stage.stageHeight; tf.width = stage.stageWidth; tf.scrollV = tf.maxScrollV; }); tf = new TextField(); tf.defaultTextFormat = new TextFormat("_sans", 12, 0); tf.mouseEnabled = false; tf.multiline = true; tf.width = stage.stageWidth; tf.height = stage.stageHeight; addChild(tf); sp1 = new Sprite(); sp1.graphics.lineStyle(5, 0); sp1.graphics.beginFill(0x008800, 1.0); sp1.graphics.drawRoundRect(360, 30, 200, 200, 10,10); sp1.graphics.endFill(); sp1.name = "Parent"; addChild(sp1); sp2 = new Sprite(); sp2.graphics.lineStyle(5, 0); sp2.graphics.beginFill(0x004400, 1.0); sp2.graphics.drawRoundRect(420, 80, 150, 100, 5,5); sp2.graphics.endFill(); sp2.name = "Child"; sp1.addChild(sp2); sp1.addEventListener(MouseEvent.MOUSE_OVER, onSpriteEvent); sp1.addEventListener(MouseEvent.MOUSE_OUT, onSpriteEvent); sp1.addEventListener(MouseEvent.ROLL_OVER, onSpriteEvent); sp1.addEventListener(MouseEvent.ROLL_OUT, onSpriteEvent); sp1.addEventListener(MouseEvent.MOUSE_UP, onSpriteEvent); sp1.addEventListener(MouseEvent.MOUSE_DOWN, onSpriteEvent); sp1.addEventListener(MouseEvent.CLICK, onSpriteEvent); // sp1.addEventListener(MouseEvent.DOUBLE_CLICK, onSpriteEvent); // sp1.addEventListener(MouseEvent.MOUSE_WHEEL, onSpriteEvent); // sp1.addEventListener(MouseEvent.MOUSE_MOVE, onSpriteEvent); sp2.addEventListener(MouseEvent.MOUSE_OVER, onSpriteEvent); sp2.addEventListener(MouseEvent.MOUSE_OUT, onSpriteEvent); sp2.addEventListener(MouseEvent.ROLL_OVER, onSpriteEvent); sp2.addEventListener(MouseEvent.ROLL_OUT, onSpriteEvent); sp2.addEventListener(MouseEvent.MOUSE_UP, onSpriteEvent); sp2.addEventListener(MouseEvent.MOUSE_DOWN, onSpriteEvent); sp2.addEventListener(MouseEvent.CLICK, onSpriteEvent); // sp2.addEventListener(MouseEvent.DOUBLE_CLICK, onSpriteEvent); // sp2.addEventListener(MouseEvent.MOUSE_WHEEL, onSpriteEvent); // sp2.addEventListener(MouseEvent.MOUSE_MOVE, onSpriteEvent); stage.addEventListener(Event.MOUSE_LEAVE, onLeaveEvent); stage.addEventListener(MouseEvent.MOUSE_OVER, onStageEvent); stage.addEventListener(MouseEvent.MOUSE_OUT, onStageEvent); stage.addEventListener(MouseEvent.ROLL_OVER, onStageEvent); stage.addEventListener(MouseEvent.ROLL_OUT, onStageEvent); stage.addEventListener(MouseEvent.MOUSE_UP, onStageEvent); stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageEvent); stage.addEventListener(MouseEvent.CLICK, onStageEvent); // stage.addEventListener(MouseEvent.DOUBLE_CLICK, onStageEvent); // stage.addEventListener(MouseEvent.MOUSE_WHEEL, onStageEvent); // stage.addEventListener(MouseEvent.MOUSE_MOVE, onStageEvent); } private function onSpriteEvent(ev:MouseEvent):void { tf.appendText("\n[SPRITE] " + getName(ev.target) + " - " + getName(ev.currentTarget) + " - " + ev.type); tf.scrollV = tf.maxScrollV; } private function onStageEvent(ev:MouseEvent):void { tf.appendText("\n[STAGE] " + getName(ev.target) + " - " + getName(ev.currentTarget) + " - " + ev.type); tf.scrollV = tf.maxScrollV; } private function onLeaveEvent(ev:Event):void { tf.appendText("\n[LEAVE] " + getName(ev.target) + " - " + getName(ev.currentTarget) + " - " + ev.type); tf.scrollV = tf.maxScrollV; } private function getName(target:Object):String { if (target == stage) return "stage"; else return target.name; } } }
よくわからん。
極力 mouseEnabled = false; mouseChildren = false; にしたほうが楽なのか。