AS3随鼠标移动的蜘蛛

 1 package antCodes
 2 {
 3     import flash.display.Sprite;
 4     import flash.utils.getDefinitionByName;
 5     import flash.display.MovieClip;
 6     import flash.events.Event;
 7     import flash.events.MouseEvent;
 8     
 9     /**
10      * ...
11      * @getDefinitionByName(name:String):Object
12      *  这是一个接口,返回name参数指定的类对象的引用
13      * @author Dong
14      */
15     public class SampleSpider extends Sprite
16     {
17         private var _Spider:Class;//蜘蛛对象
18         private var spider:MovieClip;
19         private var line:Sprite;//蜘蛛爬行的线
20         private var speed:Number = 10;//爬行速度
21         
22         public function SampleSpider(){
23             initView();
24             this.addEventListener(Event.ENTER_FRAME, drawLine);
25             this.addEventListener(Event.ENTER_FRAME, moveSpider);
26             //鼠标点击后,停止侦听ENTER_FRAME事件
27             this.stage.addEventListener(MouseEvent.CLICK, stopAnimation);
28         }        
29         private function initView():void {
30             //获取库元件自动绑定的类
31             _Spider =getDefinitionByName("Spider_mc") as Class;
32             //生成线的容器
33             line = new Sprite();
34             addChild(line);
35             //实例化显示对象
36             spider = new _Spider();
37             addChild(spider);
38             spider.cacheAsBitmap = true; //打开位图缓存,提高执行效率
39             
40         }
41         //在每帧中,重新绘制蛛丝
42         private function drawLine(evt:Event):void {
43             line.graphics.clear();        //清空
44             line.graphics.moveTo(0, 0);        
45             line.graphics.lineStyle(1, 0xffffff);        
46             line.graphics.lineTo(spider.x, spider.y);            
47         }
48         //在每帧中,移动和旋转蜘蛛
49         private function moveSpider(evt:Event):void {
50             var dx:Number = this.mouseX - spider.x;
51             var dy:Number = this.mouseY - spider.y;
52             //Math.atan():Number
53             //以弧度为单位计算并返回角度值,该角度的正切值已在参数 val 中指定。
54             var p:Number  =Math.atan(dy/dx)*180/Math.PI;//计算弧度
55             var rotateAngle:Number = (dx>0) ? (90+p):(270+p);//旋转角度
56             spider.x += dx/speed;
57             spider.rotation = rotateAngle;
58             spider.y += dy/speed;
59         }
60         private function stopAnimation(evt:MouseEvent):void {
61             this.removeEventListener(Event.ENTER_FRAME, drawLine);
62             this.removeEventListener(Event.ENTER_FRAME, moveSpider);
63         }
64     }
65 }

posted on 2012-04-09 22:42  沙漠之泉  阅读(280)  评论(0编辑  收藏  举报

导航