Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   рандомная активауия функции (http://www.flasher.ru/forum/showthread.php?t=210425)

бакуард 12.03.2015 10:07

рандомная активауия функции
 
Всем доброго времени суток. Создаю цикл день\ночь + простая разновидность погоды: ясно, пасмурно, дождь.
Перемена состояния погоды осуществляется рандомно (с помощью метода Math.random). Принцип следующий:
рандомное число от 0 до 10, если выпадает нужное число (я выбрал 9), то должна выполняться функция.
Функция не выполняется.Вот код:

Код AS3:

//день
var timer:Timer = new Timer(1000, 60);
timer.addEventListener(TimerEvent.TIMER, ftimerday);
function ftimerday (e:TimerEvent) {
        if(timer.currentCount > 59){
                timer.reset();
                timer.stop();
                timer2.start();
                weather = Math.floor(Math.random()*10);
                it_rains = Math.floor(Math.random()*10);
                trace(weather);
                trace(it_rains);
        }
}
timer.start();
 
//ночь
var timer2:Timer = new Timer(1000, 60);
timer2.addEventListener(TimerEvent.TIMER, ftimernight);
function ftimernight (e:TimerEvent) {
        if(timer2.currentCount > 59){
                timer2.stop();
                timer2.reset();
                timer.start();
        }
}
 
//пасмурный или ясный день
var weather:Number;
//идет дождь или нет
var it_rains:Number;
 
//рисуем день, ночь ,пасмурно.
stage.addEventListener(Event.ENTER_FRAME, fevent);
function fevent (e:Event) {
        if (timer.running && weather == 9){
                sky.gotoAndPlay("rain");
        }
        if (timer.running){
                sky.gotoAndPlay("day");
        }
        if (timer2.running && timer.running == false){
                sky.gotoAndPlay("night");
        }
}
 
//дождь
stage.addEventListener(Event.ENTER_FRAME, frain);
function frain (e:Event) {
          if(sky.currentFrameLabel == "rain" && it_rains == 9){
              rainrain.alpha = 1;
              rainrain.x -= 1.4;
              rainrain.y += 1.4;
          if (rainrain.x <= 194 && rainrain.y >= 270){
                  rainrain.x = 503;
                  rainrain.y = 24;
          }
        }else{
                rainrain.alpha = 0;
        }
}

Кто может, помогите пожалуйста.

ZackMercury 12.03.2015 10:19

Код не читал, но всё гораздо проще. Существует функция setTimeout:

Код AS3:

setTimeout(hit, int(Math.random()*101));
 
function hit():void
{
    trace("Hello, I appear randomly");
    setTimeout(hit, int(Math.random()*101));
}



Часовой пояс GMT +4, время: 06:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.