0

だから私はプロジェクトを作成しています.背景には、星が画面からランダムに現れたり消えたりしたいです.

星がランダムに表示されますが、画面にとどまり、最終的に画面全体が星でいっぱいになります。画面に星が 100 個表示されたら、星を 1 つ削除して別の星を追加するようにしたいと思います。または、最初に画面に100個の星があり、タイマーが毎回1つ星を削除して追加するだけです。

そのため、mystar をランダムなタイミングでステージにランダムに追加しています。追加と同時に 1 つを削除する必要があるため、画面が完全に覆われることはありません。

var myTimer:Timer = new Timer(2,0 );
var randNum = Math.round( 500 + Math.random() * 4000 );
myTimer.addEventListener(TimerEvent.TIMER, fasttimerListener);

function fasttimerListener (e:TimerEvent):void{

var timerObj:Timer = e.target as Timer;
randNum = Math.round( Math.random() * 100 );
timerObj.delay = randNum;

var mystar:smallstar = new smallstar();
mystar.x = Math.random() * stage.stageWidth;
mystar.y = Math.random() * stage.stageHeight;
addChild(mystar);

}

myTimer.start();

助けてください。配列を使用する必要があるのではないでしょうか? しかし、as3ではうまくいきません。前もって感謝します。

4

1 に答える 1

0

あなたの問題を解決しようとした後に思いついたコードは次のとおりです。はい、配列を使用しました。

var myTimer:Timer = new Timer(2,0 );
var randNum = Math.round( 500 + Math.random() * 4000 );

var starsCount:int = 100; //stars number in stage  

var st:int=0; //star inde number in Array


//---------------------------------------------------------------
//creating an Array of 100 mc stars
//---------------------------------------------------------------
var starsArray:Array=[];  //Array of movieclips smallstar

//using for loop to create 100 stars and put them in Array
for(var star:int=0; star<starsCount; star++){ 
    var mystar:smallstar = new smallstar();

    //puts mc smallstar on Array
    starsArray.push(mystar);
}


myTimer.addEventListener(TimerEvent.TIMER, fasttimerListener);

function fasttimerListener (e:TimerEvent):void{

var timerObj:Timer = e.target as Timer;
randNum = Math.round( Math.random() * 100 );
timerObj.delay = randNum;

starsArray[st].x = Math.random() * stage.stageWidth;
starsArray[st].y = Math.random() * stage.stageHeight;
addChild(starsArray[st]);
st++; //changing star index on array

//doesnt let st to be bigger than Array length
if (st>=starsArray.length) st = 0; 
}

myTimer.start();

それが役に立てば幸い。

于 2013-04-14T07:40:04.993 に答える