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 }