0

所以我正在创建一个项目,对于背景,我希望星星随机出现并从屏幕上消失。

我让星星随机出现,但它们只是停留在屏幕上,最终用星星填满整个屏幕。我希望它开始删除 1 颗星并在屏幕上有 100 颗星时添加另一颗星。甚至一开始屏幕上有 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

这是我在尝试解决您的问题后提出的代码,是的,我使用了 Array:

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 回答