flash跟随鼠标旋转by SoSo0_0 | 2009-09-20 | No Comments

跟随鼠标旋转这问题,看试很简单,往往很多人做成后,只是一侧会旋转。其实他们忽略了Math.atan与Math.atan2的区别
如:

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package{
import flash.display.sprite
import flash.events.Event
public class RotateMouse extends Sprite{
private function var arrow:Arrow
public function RotateMouse(){
arrow=new arrow
addChild(arrow)
arrow.x=stage.stageWidth/2
arrow.y=stage.stageHeight/2
addEventListener(Event.ENTER_FRAME,onEnterFrame)
   }
public function onEnterFrame{
var dx:Number=mouseX-arrow.x
var dy:Number=mouseY-arrow.y
var radians:Number=Math.atan2(dy,dx)
arrow.rotation=radians*180/Math.PI
  }
 }
}

注:arrow是事先画好图象的as文件
这简简单单语句,很多人误写2个函数
1):Math.atan2写成Math.atan 这样当鼠标在arrow左侧是,arrow不会跟随鼠标动,而是背离它
2):Math.atan2(dy,dx)写成Math.atan2(dx,dy) 说明你粗心或还没完全掌握三角函数

Leave a Reply