2011-02-13 56 views
0

我正在使用這個函數來移動一個物體圍繞一個完美圓的中心點,並且試圖修改它以將它移動到它的1/2的橢圓形狀很寬?ActionScript 3 Trig方程創建橢圓

基本上,我有一組速度

var myVelocity:Number = 0.25; 

然後計算我基於正弦和餘弦的速度

var myCos:Number = Math.cos(myVelocity); 
var mySin:Number = Math.sin(myVelocity); 

然後我圖從固定的中心點的物體的距離沿每個軸和

var x1:Number = myBall.x - centerX; 
var y1:Number = myBall.y - centerY; 
var x2:Number = myCos * x1 - mySin * y1; 
var y2:Number = myCos * y1 + mySin * x1; 
myBall.x = centerX + x2; 
myBall.y = centerY + y2; 

我有另一個函數,數字x和y基於myBall.x = centerX + cos(angle)* radius;這很容易將半徑修改爲橢圓,但有沒有簡單的方法來修改上面的橢圓變成橢圓?我想這樣做是與代碼效率更高,減少數學函數的調用次數

+0

它應該是`VAR mySin:數= Math.sin(myVelocity);` – weltraumpirat 2011-02-13 21:40:38

+0

@weltraumpirat:編輯 – OXMO456 2011-02-13 23:07:15

回答

1

這個問題幾乎是逐字什麼Keith Peters覆蓋Foundation Actionscript 3.0: Making Things Move!

我從颳起了快速的片斷爲你這本書。

import flash.display.Shape; 
import flash.events.Event; 

var box:Shape = new Shape(); 
box.graphics.beginFill(0xFF0000); 
box.graphics.drawRect(0, 0, 50, 50); 
box.graphics.endFill(); 
addChild(box); 
var angle:Number = 0; 
var centerX:Number = stage.stageWidth/2 - (box.width/2); 
var centerY:Number = stage.stageHeight/2 - (box.height/2) 
var radiusX:Number = 200; 
var radiusY:Number = 100; 
var speed:Number = .1; 
stage.addEventListener(Event.ENTER_FRAME, loop, false, 0, true); 

function loop(evt:Event):void 
{ 
    box.x = centerX + Math.sin(angle) * radiusX; 
    box.y = centerY + Math.cos(angle) * radiusY; 
    angle += speed; 
} 

結果:http://www.swfupload.com/view/155573.htm