下面制作鼠标跟随
1、新建FLA文档
2、新建影片剪辑元件,绘制一个箭头。
3、返回场景1,选中第1帧,打开动作面板输入代码:
var speed:Number = 5; addEventListener(Event.ENTER_FRAME,onEnterFrame); function onEnterFrame(event:Event):void { var dx:Number = mouseX - arrow.x; var dy:Number = mouseY - arrow.y; var angle:Number = Math.atan2(dy, dx); arrow.rotation = angle * 180 / Math.PI; var vx:Number = Math.cos(angle) * speed; var vy:Number = Math.sin(angle) * speed; arrow.x += vx; arrow.y += vy; } |
先计算出箭头与鼠标的 x 距离和 y 距离,并使用 Math.atan2 计算出它们的夹角。然后使用这个角度使箭头旋转,再使用 Math.cos 和 Math.sin 与速度相乘计算出 x,y 速度向量,最后将它们加到箭头的坐标上。
下面是文档类的两个as文件,copy到同一目录下,创建一个FLA文件,文档类:输入FollowMouse 就可运行。
Arrow类(绘制箭头) package { import flash.display.Sprite; public class Arrow extends Sprite { public function Arrow() { init(); } public function init():void { graphics.lineStyle(1,0,1); graphics.beginFill(0xff0000);//填充 graphics.moveTo(-50,-25); graphics.lineTo(0,-25); graphics.lineTo(0,-50); graphics.lineTo(50,0); graphics.lineTo(0,50); graphics.lineTo(0,25); graphics.lineTo(-50,25); graphics.lineTo(-50,-25); graphics.endFill(); } } } |
FollowMouse类(鼠标跟随)
package { import flash.display.Sprite; import flash.events.Event; public class FollowMouse extends Sprite { private var arrow:Arrow; private var speed:Number = 5; public function FollowMouse() { init(); } private function init():void { arrow = new Arrow(); addChild(arrow); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(event:Event):void { var dx:Number = mouseX - arrow.x; var dy:Number = mouseY - arrow.y; var angle:Number = Math.atan2(dy, dx); arrow.rotation = angle * 180 / Math.PI; var vx:Number = Math.cos(angle) * speed; var vy:Number = Math.sin(angle) * speed; arrow.x += vx; arrow.y += vy; } } } |
进入论坛参与讨论和交作业:http://www.missyuan.com/viewthread.php?tid=425912