2012-05-09 4 views
0

ステージの周りをランダムに移動するボールの配列があります。しかし、私は技術的にそれを防ぐ必要があるコードを持っていますが、いくつかのいくつかは、私の段階の境界を越えてスリップする。誰でも何が起こっているか知っていますか? はここに私のクラスです:ステージ境界とランダムに移動するオブジェクト

関数move() - すべてのフレームと呼ばれる、第二

for (var i:int = 0; i < (numofBalls+1); i++) 
     { 
      if (balls[i].y + ball.velY < 0 + pR || 
       balls[i].y + ball.velY > 600 - pR) 
      { 
       balls[i].angle = -ball.angle; 
       updateballVelocities(balls[i]); 
      } 
       if (balls[i].x + balls[i].velX < 0 + pR || 
       balls[i].x + balls[i].velX > 1024 - pR) 
      { 
       balls[i].angle = -balls[i].angle + 180; 
       updateballVelocities(balls[i]); 

      } 
       balls[i].x += balls[i].velX; 
       balls[i].y += balls[i].velY; 
     } 
    } 

機能updateballVelocities

{ 
     var radians:Number = deg2rad(b.angle); 
     b.velX = Math.cos(b.angle) * b.speed; 
     b.velY = Math.sin(b.angle) * b.speed; 
    } 

機能addBall

 public function addBall():void 
    { 
     ball = new Ball(); 
     ball.x = Math.random() * (1024 - pD) + pR; 
     ball.y = Math.random() * (600 - pD) + pR; 
     ball.speed = 12; 
     ball.angle = Math.random() * 360; 
     updateballVelocities(ball); 
     addChild(ball); 
     balls[numofBalls] = ball; 
     numofBalls++; 
    } 

機能removeballあたり30のフレームで

個の
 public function removeBall():void 
    { 
     ball = balls[numofBalls]; 
     numofBalls--; 
     removeChild(ball); 
     balls.pop(); 
     move(); 
    } 

変数

private var ball:Ball = new Ball(); 
    private var pD:Number = ball.width; 
    private var pR:Number = ball.width/2; 
    private var balls:Array = new Array(); 
    private var numofBalls:int = 0; 

また、別の小さな質問...ボールを取り除く...最初のクリックで として、すべてがフリーズします。 2回目のクリックで、解凍され、ボールが取り除かれます。

答えて

2

移動機能では、balls[i].velYまたはballs[i].angleではなく、ball.velYまたはball.angleと表示されます。

さらに、ハードコードされた幅と高さの値をstage.stageWidthstage.stageHeightに変更する必要があります。

+0

ありがとうございます。コンテナ配列を作成したときにそれを変更するのを忘れました。 同様のインデックス作成の問題も、フリーズの問題でした。私はあなたの助けに感謝します。 – nameistaken1

関連する問題