package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; public class FleeEvadeWanderTest extends Sprite { private var _pursuer:SteeredVehicle; private var _evader:SteeredVehicle; private var _target:SteeredVehicle; private var _seeker:SteeredVehicle; private var _fleer:SteeredVehicle; private var _text:TextField; private var _isRun:Boolean = false; public function FleeEvadeWanderTest() { stage.align=StageAlign.TOP_LEFT; stage.scaleMode=StageScaleMode.NO_SCALE; _evader=new SteeredVehicle(0x00ff00);//躲避者(绿色) addChild(_evader); _target=new SteeredVehicle(0x000000);//目标(黑色) _target.velocity.length = 20; addChild(_target); _fleer=new SteeredVehicle(0xffff00);//避开者(黄色) addChild(_fleer); _target.edgeBehavior = _evader.edgeBehavior = _fleer.edgeBehavior = Vehicle.BOUNCE; _text = new TextField(); _text.text="点击鼠标开始演示"; _text.height=20; _text.width=100; _text.x=stage.stageWidth/2-_text.width/2; _text.y=stage.stageHeight/2-_text.height/2; addChild(_text); stage.addEventListener(MouseEvent.CLICK,stageClick); } private function stageClick(e:MouseEvent):void { if (! _isRun) { _target.position=new Vector2D(50,50); _evader.position = _fleer.position=new Vector2D(stage.stageWidth/2,stage.stageHeight/2); addEventListener(Event.ENTER_FRAME, onEnterFrame); _isRun=true; removeChild(_text); } else { _evader.position = _target.position=_fleer.position=new Vector2D(0,0); removeEventListener(Event.ENTER_FRAME, onEnterFrame); _isRun=false; addChild(_text); _text.text="点击鼠标重新开始"; } } private function onEnterFrame(event:Event):void { _target.wander(); _fleer.flee(_target.position); _evader.evade(_target); _target.update(); _fleer.update(); _evader.update(); } } }