2011-11-08 7 views
3

アクションスクリプトとプログラミングを学習するので、ソリューションが簡単であることをお詫びします。私はそれが何であるか分かりません。私が何をしたいのかは、私が画面に落ちたいオブジェクトを渡すことです。私はオブジェクトをe:Event(ステージ上のイベントリスナーから来ています)と、高い値と低い値の間の乱数を得る速度に渡します。ループ内の乱数は、フレームごとに新しい番号を取得するのを止めるにはどうすればよいですか?

私はそれを実行するともちろん、すべてのフレームごとに新しい乱数を取得します。 ?ここではその方法を私は私の目標を達成するために、この行くのです

Event.ENTER_FRAME

によって呼び出さ

が私のコードであるため、(:

private function moveIt(e:Event, speed):void 
    { 
     if (e.currentTarget.y <= 400) 
     { 
      var objSpeed = speed; 
      e.currentTarget.y = e.currentTarget.y + speed; 
      trace("speed = "+ speed); 
     } 
     else 
     { 
      //Do other stuff 
     } 
    }//moveit 

要求されるように、ここでのコードの他の部分があります関連していること:

乱数

private function randomNum(high, low):Number 
    { 
     var randNum:Number = Math.floor(Math.random()*(1 + high - low))+low; 
     return randNum; 
    } 

は彼女を呼ばれます電子

iconPsd.addEventListener(Event.ENTER_FRAME, animate) 

、その後、ここから(uneededが、これは私の試みだった)

private function animate(e:Event):void 
    { 
     var speed:Number = randomNum(55, 0.1); 
     moveIt(e, speed); 
     trace ("speed in animate = "+ speed); 

    }//animate 
+0

があなたのEventListener –

+0

を投稿あなたは乱数スピードを生成し、あなたのコードの一部を投稿する必要があります。 –

+0

コードを追加しました。私はエラーは発生しません。ループ内で乱数を正しく使用する方法を知る必要があるので、フレームごとに新しい乱数を取得する必要はありません。 – jonshariat

答えて

4

は、アニメーション機能のうち、var speed:Number = randomNum(55, 0.1);してください。

そして、このようにそれを書く:

iconPsd.speed = randomNum(55, 0.1); 
iconPsd.addEventListener(Event.ENTER_FRAME, animate); 

private function animate(e:Event):void 
    { 
     moveIt(e); 
     trace ("speed in animate = "+ e.currentTarget.speed); 

    }//animate 

private function moveIt(e:Event):void 
    { 
     if (e.currentTarget.y <= 400) 
     { 
      e.currentTarget.y = e.currentTarget.y + e.currentTarget.speed; 
      trace("speed = "+ e.currentTarget.speed); 
     } 
     else 
     { 
      //Do other stuff 
     } 
    }//moveit 

ここでは、enterFrameの外iconPsdオブジェクトのプロパティとして速度を割り当てるが、それでもenterFrame内でそれを使用することができます。

また、ちょうどこのために、それを圧縮することができます

iconPsd.speed = randomNum(55, 0.1); 
iconPsd.addEventListener(Event.ENTER_FRAME, animate); 

private function animate(e:Event):void 
    { 
     if (e.currentTarget.y <= 400) 
     { 
      e.currentTarget.y = e.currentTarget.y + e.currentTarget.speed; 
      trace("speed = "+ e.currentTarget.speed); 
     } 
     else 
     { 
      //Do other stuff 
     } 
    }//animate 
+0

長官、ありがとう!これは私が望んでいたのとまったく同じように働いた私はスピードの性質について知らなかった。 – jonshariat

+0

@jonshariatそれはあなたのために働いてうれしい:)、しかし、速度は、デフォルトのプロパティではない、あなたは何かで速度を置き換えることができます。 iconPsdはオブジェクトなので、任意のプロパティを追加することができます(オブジェクトをスコープとして使用してアクセスできる変数を格納するものと考える)。 –

+0

ああ、私は参照してください。知ってよかった!ありがとう。 – jonshariat

関連する問題