当前位置: 主页 > 网页制作 > Flash > Flash AS3.0学习速度向量

Flash AS3.0学习速度向量

时间:2009-12-21来源:互联网 点击:

下面制作鼠标跟随

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;
                }
        }
}

站长资讯网
.
分页: [1] [2] [3]
TAG: Flash AS3.0,速度
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言