2016-04-24 66 views
1

我想讓小圓圈能夠在大圓內旋轉。但是,我得到的結果是,小圓圈在大圓外旋轉。 這裏是我的代碼:閃迴圈不在另一個圓內旋轉

import flash.events.Event; 
import flash.events.MouseEvent; 

var Rec:Number=-1; 

stage.addEventListener(Event.ENTER_FRAME,EntFrame); 

function EntFrame(e:Event):void 
{ 
    if (Rec == -1) 
    { 
     CircleL.rotation-= 2; 
    } 
} 

var cenX = CircleL.x; 
var cenY = CircleL.y; 

var ccStep = .01; 
var twoPI = 2 * Math.PI; 
var circleSNum1:Number = Math.random(); 
var circleSNum2:Number = Math.random(); 
var circleSNum3:Number = Math.random(); 
var circleSNum4:Number = Math.random(); 
var circleSNum5:Number = Math.random(); 

function randomRange(minNum:Number, maxNum:Number):Number 
{ 
    return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum); 
} 

var radius1 = randomRange(10, 90); 
var radius2 = randomRange(10, 90); 
var radius3 = randomRange(10, 90); 
var radius4 = randomRange(10, 90); 
var radius = randomRange(10, 90); 

function move(event:Event):void 
{ 
    CircleL.CircleS1.x = cenX + Math.cos(circleSNum1 * twoPI) * radius; 
    CircleL.CircleS1.y = cenY + Math.sin(circleSNum1 * twoPI) * radius; 

    CircleL.CircleS2.x = cenX + Math.cos(circleSNum2 * twoPI) * radius2; 
    CircleL.CircleS2.y = cenY + Math.sin(circleSNum2 * twoPI) * radius2; 

    CircleL.CircleS3.x = cenX + Math.cos(circleSNum3 * twoPI) * radius3; 
    CircleL.CircleS3.y = cenY + Math.sin(circleSNum3 * twoPI) * radius3; 

    CircleL.CircleS4.x = cenX + Math.cos(circleSNum4 * twoPI) * radius4; 
    CircleL.CircleS4.y = cenY + Math.sin(circleSNum4 * twoPI) * radius4; 

    CircleL.CircleS5.x = cenX + Math.cos(circleSNum5 * twoPI) * radius1; 
    CircleL.CircleS5.y = cenY + Math.sin(circleSNum5 * twoPI) * radius1; 
} 

addEventListener(Event.ENTER_FRAME,move); 

下面是它的外觀,當我運行它,如:

image

回答

1

這個問題可能你的圈子中嵌套的方式,以及如何做計算。

.x.yDisplayObject屬性總是關於父母的來源。看看你的代碼:

CircleL.CircleS1 
CircleL.CircleS2 

所有的小圓圈都有更大的容器。但是,您的計算是:

cenX + Math.cos(circleSNum1 * twoPI) * radius; 
// aka 
CircleL.x + Math.cos(circleSNum1 * twoPI) * radius; 

從添加父級的座標開始。這與上述相矛盾,因爲「關於他們的父母」已經包括術語CircleL.x。您有兩種選擇:

  1. 保留代碼,但將所有較小的圓圈移到其父項外,以便它們是大圓圈的「兄弟姐妹」。
  2. 保留該結構,但更改代碼以適應該結構並從計算中刪除父級的位置。
+0

我可以問爲什麼stop()或play()無法在我的代碼上工作? isit因爲我使用var Rec:Number = -1;製作動畫? – Darren

+0

@達倫:請不要在評論中提出新問題。創建一個新問題。現在是否解決了圈子的問題? – null

+0

Yeap它解決了! – Darren