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