简单模拟MouseEvent.ROLL_OUT MouseEvent.ROLL_OVER MouseEvent.MOUSE_MOVE

随便写的,所以大家随便看看:
利用Rectangle的contains或者containsPoint方法,得知鼠标是否在Rectangle所表示的矩形范围内;

 

//rollover指示ROLL_OVER事件,ROLL_OUT事件,rect用于检测的Rectangle,overPoint用于检测MOUSE_MOVE事件
var rollover : Boolean = false;
var rect : Rectangle = new Rectangle(0,0,200,300);
var overPoint : Point;        
addEventListener(Event.ENTER_FRAME, enterFrameHandler);

private function enterFrameHandler(event : Event) : void {
                        var mousePoint : Point = new Point(stage.mouseX, stage.mouseY);
                        if(rect.containsPoint(mousePoint)) {
                        //鼠标进入rect范围
                                if(!rollover){
                                        //鼠标首次进入rect
                                        rollover = true;
                                        overPoint = mousePoint;
                                        trace("ROLL_OVER");
                                }else{
                                        //鼠标在rect内移动
                                        if(overPoint && Point.distance(overPoint, mousePoint) != 0){
                                                overPoint = mousePoint;
                                                trace("MOUSE_MOVE");
                                        }
                                }
                        }else{
                         //鼠标移出rect范围
                                if(rollover){
                                //鼠标首次移出rect
                                        rollover = false;
                                        trace("ROLL_OUT");
                                }
                        }
                }

 

var clips:Array = [tu1, tu2, tu3, tu4, tu5, tu6, tu7, tu8, tu9]; // 存储所有影视剪辑的数组 var STATE_NORMAL:Number = 1; var STATE_OVER:Number = 2; var STATE_SELECTED:Number = 3; for (var i:Number = 0; i < clips.length; i++) { var clip:MovieClip = clips[i]; clip.gotoAndStop(STATE_NORMAL); clip.selected = false; // 添加一个selected属性并初始化为false clip.useHandCursor = true; clip.addEventListener(MouseEvent.ROLL_OVER, onRollOver); clip.addEventListener(MouseEvent.ROLL_OUT, onRollOut); clip.addEventListener(MouseEvent.CLICK, onClick); } function onRollOver(event:MouseEvent):void { trace("onRollOver called"); updateState(event.currentTarget as MovieClip, STATE_OVER); } function onRollOut(event:MouseEvent):void { trace("onRollOut called"); var clip:MovieClip = event.currentTarget as MovieClip; if (!clip.selected) { updateState(clip, STATE_NORMAL); } } function onClick(event:MouseEvent):void { trace("onClick called"); var clip:MovieClip = event.currentTarget as MovieClip; if (clip.selected) { return; } for (var j:Number = 0; j < clips.length; j++) { var c:MovieClip = clips[j]; c.selected = false; updateState(c, STATE_NORMAL); } clip.selected = true; updateState(clip, STATE_SELECTED); } function updateState(clip:MovieClip, state:Number):void { clip.gotoAndStop(state); if (state == STATE_SELECTED) { clip.mc_normal.visible = false; clip.mc_over.visible = false; clip.mc_selected.visible = true; } else if (state == STATE_OVER) { clip.mc_normal.visible = false; clip.mc_over.visible = true; clip.mc_selected.visible = false; } else { // STATE_NORMAL clip.mc_normal.visible = true; clip.mc_over.visible = false; clip.mc_selected.visible = false; } }改为as2语言
05-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值