·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3的时间问题time源代码

时间:2015-05-21 11:04酷播
[AS3]as3的时间问题time源代码

[AS3]as3的时间问题time源代码

  1. 显示代码 
  2. package { 
  3.     import flash.display.Sprite; 
  4.     import flash.events.Event; 
  5.     import flash.geom.Point; 
  6.  
  7.     public class MouseAvoider extends Sprite { 
  8.  
  9.         private const SPRING:Number=0.1;//弹性系数 
  10.         private const FRICTION:Number=0.9;//摩擦系数 
  11.         private const FEAR_DISTANCE:Number=150;//安全距离(小于该距离则发生躲避行为) 
  12.         private const MAX_AVOID_FORCE:uint=10;//最大躲避速度 
  13.  
  14.         private var _destinationPoint:Point;//目标静止点(鼠标远离该物体时,物体最终会静止的坐标点) 
  15.         private var _speed:Point=new Point(0,0);//速度矢量(_speed.x即相当于vx,_speed.y即相当于vy) 
  16.  
  17.         public function MouseAvoider():void { 
  18.             drawStuff(); 
  19.         } 
  20.  
  21.         private function drawStuff():void { 
  22.             //默认先画一个半径为10的圆 
  23.             graphics.beginFill(Math.random() * 0xFFFFFF); 
  24.             //graphics.beginFill(0xFFFFFF); 
  25.             graphics.drawCircle(0, 0, 5); 
  26.             graphics.endFill(); 
  27.         } 
  28.  
  29.         //只写属性(设置目标点) 
  30.         public function set destinationPoint(value:Point):void { 
  31.             _destinationPoint=value
  32.             addEventListener(Event.ENTER_FRAME, enterFrameHandler); 
  33.         } 
  34.          
  35.          
  36.         protected function enterFrameHandler(e:Event):void { 
  37.             moveToDestination();//先移动到目标点 
  38.             avoidMouse();//躲避鼠标 
  39.             applyFriction();//应用摩擦力 
  40.             updatePosition();//更新位置 
  41.         } 
  42.  
  43.         //以弹性运动方式移动到目标点 
  44.         private function moveToDestination():void { 
  45.             _speed.x += (_destinationPoint.x - x) * SPRING; 
  46.             _speed.y += (_destinationPoint.y - y) * SPRING; 
  47.         } 
  48.  
  49.         //躲避鼠标 
  50.         private function avoidMouse():void { 
  51.             var currentPosition:Point=new Point(x,y);//确定当前位置 
  52.             var mousePosition:Point=new Point(stage.mouseX,stage.mouseY);//确实鼠标位置 
  53.             var distance:uint=Point.distance(currentPosition,mousePosition);//计算鼠标与当前位置的距离 
  54.              
  55.             //如果低于安全距离 
  56.             if (distance<FEAR_DISTANCE) { 
  57.                 var force:Number = (1 - distance / FEAR_DISTANCE) * MAX_AVOID_FORCE;//计算(每单位时间的)躲避距离--即躲避速率 
  58.                 var gamma:Number=Math.atan2(currentPosition.y- mousePosition.y,currentPosition.x- mousePosition.x);//计算鼠标所在位置与当前位置所成的夹角 
  59.                  
  60.                 var avoidVector:Point=Point.polar(force,gamma);//将极坐标转换为普通(笛卡尔)坐标--其实相当于vx = force*Math.cos(gamma),vy = force*Math.sin(gamma) 
  61.                  
  62.                 //加速 躲避逃开 
  63.                 _speed.x+=avoidVector.x; 
  64.                 _speed.y+=avoidVector.y; 
  65.             } 
  66.         } 
  67.          
  68.         //应用摩擦力 
  69.         private function applyFriction():void { 
  70.  
  71.             _speed.x*=FRICTION; 
  72.             _speed.y*=FRICTION; 
  73.         } 
  74.          
  75.         //最终更新自身的位置 
  76.         private function updatePosition():void { 
  77.  
  78.             x+=_speed.x; 
  79.             y+=_speed.y; 
  80.         } 
  81.  
  82.     } 

[AS3]as3的时间问题time源代码

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器