想在AS3裏實現圓周運動,咱們通常都這麼寫:編程
var centerX:Number = 300; var centerY:Number = 200; var radius:Number = 20; var degree:Number = 0; addEventListener(Event.ENTER_FRAME, enterFrameHandler); function enterFrameHandler(event:Event):void{ display.x = centerX + radius * Math.cos(degree * Math.PI / 180); display.y = centerY + radius * Math.sin(degree * Math.PI / 180); degree += 5; }
其中centerX和centerY分別是圓心的x座標和y座標,radius爲圓周的半徑,degree是當前角度。
代碼中出現了cos和sin兩個三角函數,可別以爲這些中學的基礎知識你們都懂,沒準就在高中畢業當天,就有很多人把這些函數都還給老師了。就像iloveas,除了「欲窮幹裏日」一句外,小學課本里教過的古詩詞都早給我忘的一乾二淨了。
那麼,有沒辦法不經過這些蛋疼的三角函數來實現一樣的效果呢?說到這裏,大神們估計很容易想到向量、矩陣等高端貨,不過今天iloveas給你們分享一個更簡單的作法,只要一行代碼,什麼弦什麼切的均可以一邊涼快去了:函數
var pt:Point = Point.polar(radius, degree * Math.PI / 180); display.x = centerX + pt.x; display.y = centerY + pt.y;
若是你喜歡裝逼,那如下寫法會更適合你:blog
var pt:Point = Point.polar(radius, degree * Math.PI / 180).add(new Point(centerX, centerY)); display.x = pt.x; display.y = pt.y;
不能否認的是,iloveas今天介紹的方法在運行效率方面比本身寫三角函數要差的多,但它很適合像iloveas這樣的數學白癡們入門編程這一行。在這點上,AS3確實作的比其餘語言好,因此無論AS3的明天何去何從,你們都來多多支持AS3吧。數學