2014-04-09 5 views
0

저는 물건의 대부분을했고 중심점을 중심으로 회전하는 볼을 가지고 있습니다. 내가 필요로하는 것은 공이 같은 선을 따라 함께 무작위로 생성 된 점에서 회전하기 시작하는 것입니다. 여기 내 코드가있다. 감사.오브젝트를 무작위로 돌려서 ActionScript 3.0에서 회전 시키십시오.

import flash.display.Sprite; 

var ball1 : Sprite = new ballMC(); 
var ball2 : Sprite = new ballMC(); 
var ball3 : Sprite = new ballMC(); 
var ball4 : Sprite = new ballMC(); 
var centreball : Sprite = new ballMC(); 
var centerX:Number = stage.stageWidth/2; 
var centerY:Number = stage.stageHeight/2; 
var radius:Number; 
var speed:Number = 0.09 ; 
var angle:Number = 0; 
var rand1:Number = (Math.round(Math.random()*(1 + 100-50))+50); 
var rand2:Number = (Math.round(Math.random()*(1 + 100-50))+50); 
var rand3:Number = (Math.round(Math.random()*(1 + 100-50))+50); 
var rand4:Number = (Math.round(Math.random()*(1 + 100-50))+50); 

var reversebutt:butttonreverse = new butttonreverse(); 
var orbitoryDirection:String = "forward"; 
init(); 


function init():void 
{ 
    addChild(ball1); 
    addChild(ball2); 
    addChild(ball3); 
    addChild(ball4); 
    addChild(reversebutt); 
    addChild(centreball); 
    centreball.x = stage.stageWidth/2; 
    centreball.y = stage.stageHeight/2; 

    radius = (Math.round(Math.random()*(1 + 200-50))+50); 


    addEventListener(Event.ENTER_FRAME, circleit); 
    reversebutt.addEventListener(MouseEvent.CLICK,differentdir); 
} 

function circleit(e:Event):void 
{ 
    ball1.x = centerX + Math.cos(angle) * (radius + rand1); 
    ball1.y = centerY + Math.sin(angle) * (radius + rand1); 
    ball2.x = centerX + Math.cos(angle) * (radius + rand2); 
    ball2.y = centerY + Math.sin(angle) * (radius - rand2); 
    ball3.x = centerX + Math.cos(angle) * (radius - rand3); 
    ball3.y = centerY + Math.sin(angle) * (radius - rand3); 
    ball4.x = centerX + Math.cos(angle) * (radius - rand4); 
    ball4.y = centerY + Math.sin(angle) * (radius - rand4); 

    reversebutt.x = centerX + (centerX/2) ; 
    reversebutt.y = centerY + (centerY/2) ; 

    reversebutt.name = "1"; 
    if (orbitoryDirection == "forward") 
    { 
     angle += speed; 

    } 
    else 
    { 
     angle -= speed; 
    } 
} 


function differentdir(event:MouseEvent):void 
{ 
    if (event.target.name == "1") 
    { 
     if (orbitoryDirection == "forward") 
     { 
      orbitoryDirection = "backwards"; 
     } 
     else 
     { 
      orbitoryDirection = "forward"; 
     } 
    } 

} 
+0

헤이 guys..just 실제로 나 자신을 어떻게 알아 냈어. circleit 함수에서 저는 각도 값 cos과 sin 값을 다른 값으로 무작위로 나눕니다. 그것은 작동합니다. 여전히 올바른 방법인지 궁금합니다. – Ang

답변

0

어쨌든 ... 클래스 대신 타임 라인 코딩를 사용하는 것이 더 좋을 것입니다, 당신은 4 공 있기 때문에, 4 개 각 변수를 만들어 그들에게 무작위로 초기화 값을 제공하고 그것 뿐이다해야한다, 당신이 완료됩니다.

는 예컨대 :

var angle1:Number = Math.random()*360; 
var angle2:Number = Math.random()*360; 
var angle3:Number = Math.random()*360; 
var angle4:Number = Math.random()*360; 

function circleit(e:Event):void 
{ 
    ball1.x = centerX + Math.cos(angle1) * (radius + rand1); 
    ball1.y = centerY + Math.sin(angle1) * (radius + rand1); 
    ball2.x = centerX + Math.cos(angle2) * (radius + rand2); 
    ball2.y = centerY + Math.sin(angle2) * (radius - rand2); 
    ball3.x = centerX + Math.cos(angle3) * (radius - rand3); 
    ball3.y = centerY + Math.sin(angle3) * (radius - rand3); 
    ball4.x = centerX + Math.cos(angle4) * (radius - rand4); 
    ball4.y = centerY + Math.sin(angle4) * (radius - rand4); 

    reversebutt.x = centerX + (centerX/2) ; 
    reversebutt.y = centerY + (centerY/2) ; 

    reversebutt.name = "1"; 
    if (orbitoryDirection == "forward") 
    { 
     angle += speed; 

    } 
    else 
    { 
     angle -= speed; 
    } 
} 
관련 문제