Форум 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=132309)

mtwob 09.11.2009 16:42

Случайное воспроизведение мувика
 
Hello, world!

Есть 8 Graphic Symbols на одном слое, необходимо чтобы они показывались в случайном порядке на случайное количество секунден, например от 3 до 20 секунден.
Подобно помигиванию звезд на небе то там то тут то все вместе. xD

Gaen 09.11.2009 17:45

setTimeout()/setInterval()/Timer
Math.random()

mtwob 09.11.2009 17:56

111
 
вся проблема в том что Hello, World!
Я еще только начал разбираться.

Zik. 09.11.2009 18:13

Ну вам и сказали в каком направлении нужно разбираться

mtwob 10.11.2009 09:31

То есть нужно все эти функции использовать?

Felicast 10.11.2009 10:09

нужно про них прочитать, и решение само придет

mtwob 11.11.2009 17:05

Что то ничего не выходит
 
Что то ничего не выходит.

http://help.adobe.com/ru_RU/AS3LCR/F...0.0/index.html
вообще только рандом и таймер,

Подскажите пожалуйста поподробнее

Добавлено через 39 минут
Код AS1/AS2:

stop();
tt = getTimer();
this.onEnterFrame = function(){
        if(getTimer()-tt>=30000){
                nextFrame();
        }
}

Разобрался с задержкой, а как приделать чтобы количество секунд было рандомным?

Felicast 11.11.2009 17:53

Код AS3:

var _movies:Dictionary = new Dictionary();
 
var tmpTimer:Timer;
 
tmpTimer = new Timer(Math.random() * n + m);            //время от m до m+n
tmpTimer.addEventListener(event.TIMER, show);
tmpTimer.start();
_movies[tmpTimer] = movie1;
 
tmpTimer = new Timer(Math.random() * n + m);            //время от m до m+n
tmpTimer.addEventListener(event.TIMER, show);
tmpTimer.start();
_movies[tmpTimer] = movie2;
 
/*....*/
 
tmpTimer = new Timer(Math.random() * n + m);            //время от m до m+n
tmpTimer.addEventListener(event.TIMER, show);
tmpTimer.start();
_movies[tmpTimer] = movie8;
 
function show(event:TimerEvent):void
{
          var timer:Timer = event.target as Timer;
          if (timer)
          {
                    timer.removeEventListener(event.TIMER, show);
                    timer.addEventListener(event.TIMER, hide);
                    timer.delay = Math.random() * n + m;
                    var movie:DisplayObject = _movies[vent.target] as DisplayObject;
                    if (movie)
                    {
                              movie.visible = true;
                    }
          }
}
 
function show(event:TimerEvent):void
{
          var timer:Timer = event.target as Timer;
          if (timer)
          {
                    timer.removeEventListener(event.TIMER, hide);
                    timer.addEventListener(event.TIMER, show);
                    timer.delay = Math.random() * n + m;
                    var movie:DisplayObject = _movies[vent.target] as DisplayObject;
                    if (movie)
                    {
                              movie.visible = false;
                    }
          }
}


mtwob 12.11.2009 10:01

%-/

В итоге я сделал так: загнал внутри каждого мувика 2 фрейма первый с нижным изображением второй пустой

В первом
Код AS1/AS2:

stop();
tt = getTimer();
this.onEnterFrame = function(){
        if(getTimer()and random(3000)<100){
                nextFrame();
        }
}

вот второй фрем
Код AS1/AS2:

stop();
tt = getTimer();
this.onEnterFrame = function(){
        if(getTimer()and random(3000)<100){
                prevFrame();
        }
}

Через Ж. в общем.

Felicast, в режиме ознакомления, не могли бы выкинуть ваше решение(исходник).

bicubic_bublic 12.11.2009 11:27

это AS3 - не пишите во фреймах...
Код AS3:

        public class Star extends Sprite {
 
                private var timer:Timer;
 
                private var minTime:Number = 3000;
                private var maxTime:Number = 20000;
 
                public function Star () {
                        timer = new Timer(Math.round(Math.random() * (maxTime - minTime) + minTime), 1);
                        timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
                        timer.start();
                }
 
                public function onTimerComplete(e:Event = null) {
                        visible = !visible;
                        timer.delay = Math.round(Math.random() * (maxTime - minTime) + minTime);
                        timer.reset();
                        timer.start();
                }
 
    }



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

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