случайная генерация изображений на экране, как мне заставить его зацикливаться после определенного количества

поэтому я создаю проект, и для фона я хочу, чтобы звезды случайным образом появлялись и исчезали с экрана.

У меня звезды появляются случайным образом, но они просто остаются на экране и в конечном итоге заполняют весь экран звездами. Я хотел бы, чтобы он начал удалять 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. заранее спасибо.


person Naomi Gabriel    schedule 13.04.2013    source источник
comment
Чтобы удалить звезду, вы должны знать ее положение и то, что там было раньше.   -  person Marichyasana    schedule 13.04.2013


Ответы (1)


Вот код, который я придумал после попытки решить вашу проблему, и да, я использовал 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();

Надеюсь, поможет.

person Audrius Butkus    schedule 14.04.2013