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 }