[AS3编程教学]自定义鼠标(2)
1、打开Flash,新建一个AS3空白文档,如下图所示:
![[AS3编程教学]自定义鼠标(2)](https://exp-picture.cdn.bcebos.com/cf6d451b1edef4dc454eb0ac45ecd3d968750ccf.jpg)
2、我们自己绘制一个鼠标,为了以示区别,这次我们鼠标换一种颜色和造型,同时希望大家看清楚,文档的默认设置帧频为30帧每秒:
![[AS3编程教学]自定义鼠标(2)](https://exp-picture.cdn.bcebos.com/a1780d1fceecd3d98002517767995943050108cf.jpg)
3、我们同样命名这个自己绘制的鼠标转换为影片剪辑,属性名为mcMouse,因为是编程教学,所以图形的绘制和元件转换过程大家自己完成:)
![[AS3编程教学]自定义鼠标(2)](https://exp-picture.cdn.bcebos.com/6834ecc4ec995943e976eb4d95425d6b05d104cf.jpg)
4、时间轴上新建一层AS层,第一帧按下F9,在动作面板中写入如下代码,并发布运行看看效果:Mouse.hide();stage.addEventListener(MouseEvent.MOUSE_MOVE,dragMouse);function dragMouse(e:Event):void{ mcMosue.x = stage.mouseX; mcMosue.y = stage.mouseY;}
![[AS3编程教学]自定义鼠标(2)](https://exp-picture.cdn.bcebos.com/49bf00425d6b04d1bb5e393bb213e8e5edee01cf.jpg)
5、是不是已经实现了自定义鼠标效果,但是有个奇怪的现象,鼠标不动的时候,鼠标可能再其它地方,鼠标动一下才开始跟随。这个跟我们这次侦听的事件有关,MouseEvent.MOUSE_MOVE,这个事件就是在鼠标移动的时候才开始相应侦听函数,改变自定义鼠标位置,这样效率高很多,为了防止出现一开始的不同步现象,我们需要默认将自定义鼠标位置放置到鼠标位置,加入下面代码再次执行:mcMosue.x = stage.mouseX;mcMosue.y = stage.mouseY;
![[AS3编程教学]自定义鼠标(2)](https://exp-picture.cdn.bcebos.com/9bc92713e8e5ecee5acb1d9ccc704618deda7acf.jpg)
6、相信这次测试效果完全OK,但是可能细心的同学已经发现了这段代码中两段是一模一样的,你们听说过”封装“这个词吗,来个简单的封装吧,将相同的代码写出函数,就像下面这样,效率和简洁度都有提高:Mouse.hide();setMousePos();stage.addEventListener(MouseEvent.MOUSE_MOVE,dragMouse);function dragMouse(e:Event):void{ setMousePos();}function setMousePos():void{ mcMosue.x = stage.mouseX; mcMosue.y = stage.mouseY;}
![[AS3编程教学]自定义鼠标(2)](https://exp-picture.cdn.bcebos.com/bf6e59704618dfda184c983589214f57925677cf.jpg)
7、这种写法在效率上比较好,毕竟鼠标不动的时候,程序不会进行很多无用计算。但是弊端就是当你的作品本身需要注册鼠标移动事件的时候i,有可能冲突,此时你就需要将冲突的东西都放在一起处理了。
![[AS3编程教学]自定义鼠标(2)](https://exp-picture.cdn.bcebos.com/de9bfa3b3b860221b02030e5d8bbf82065fb72cf.jpg)