![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
Здравствуйте.
Такая ситуация. Есть допустим от 5 до 10 мувиков с вложенной в них анимацией. В каждом мувике, на последнем кадре анимации . Все мувики расположены на первом кадре сцены. Какой примерный код сможет запускать рандомно, с промежутком времени эти мувиклипы, точнее однократно включать анимацию в них? Эффект на подобии мерцания звезд на звездном небе. Я вот пытался додумать, так и не пришло особо ничего в голову, т.к. АС еще плоховато знаю.. Буду очень благодарен, заранее огромное спасибо! |
|
|||||
|
.
|
Посмотрите в сторону Math.random(), setInterval и "001 Что это за скобочки? this["clip"] или как можно "обратиться" к клипу?"
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
Я бы рад в этом разобраться, но не получается толком. А время не терпит. Можно пожалуйста примерную подсказку?
Я мыслю в сторону: цикл - массив с инстанс неймами клипов - рандом плей "инстанс нейм из массива". Дело в том, что каждый клип имеет в сцене свое четкое место, и пример со звездным небом не совсем точный, тут важно чтобы каждый уникальный клип оставаясь на определенном месте, проигрывал анимацию однократно. А проигрывание клипов было бы рандомным и поочередным. |
|
|||||
|
Модрон-ветеринар
|
Цикл не надо, он неудобен, он выполнится сразу, а вам нужен "промежуток времени" (можно конечно использовать связку цикл - setTimer, но зачем усложнять?). Вам сказали, нужно использовать setInterval. В хелпе есть примеры.
Пишите функцию, которая рандомно стартует мувики, и назначете для нее интервал. Пусть эта функция также определяет внутри мувиков переменные-триггеры - если старотовала мувик, то присваивает переменной 1. Типа, PLAYMOVIE = setInterval(startMovie, 1000); //1000 - секундый интервал между стартами total = 20; //количество мувиков всего count = 1; function startMovie() { i = Math.round(Math.random() * total); if (count <= total) { //проверяем,не все ли еще мувики стартованы if (this["mc" + i].wasStarted != 1) { this["mc" + i].wasStarted = 1; this["mc" + i].gotoAndPlay(2); //воспроизведение мувика с нужного кадра count++; } else { startMovie(); //если взятый мувик уже был стартован, запускаем функцию еще раз } } else { clearInterval(PLAYMOVIE); //останавливаем перебор, когда count > total } }; А создавать "массив с инстанс неймами клипов" вам не надо, флеш это уже сделал за вас, так как, например, если у вас ролики лежат на _root, то этот самый _root уже и есть "массив с инстанс неймами клипов", и к ним нужно просто обращаться, как я вам в функции написал (там может быть не this, а _root, если они на _root у вас, и вы хотите явно к _root обращаться). Последний раз редактировалось mooncar; 04.08.2009 в 11:44. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
mooncar, спасибо большое за помощь и объяснение. Но вот вопрос возник. Когда функция срабатывает 20-ый раз, получается, что каждому(из 20-ти) мувиклипу присвоен тригер - 1. То есть каждый из клипов запускается однократно. После этого само собой мувики уже не запускаются. А как можно по выполнению условия count > total, очистить тригеры и запустить все заново?
Добавлено через 1 час 16 минут Еще раз большое спасибо, вопрос решил сам) |
|
|||||
|
Модрон-ветеринар
|
Хорошо.
Если использовать ту же функцию для повторного старта, то да, триггеры нужно очистить, хотя бы циклом (поставить маленький цикл по очистке после строки с clearInterval). А если нет, то их можно стартовать когда угодно, через gotoAndPlay, триггеры привязаны конкретно к этой функции. Последний раз редактировалось mooncar; 04.08.2009 в 18:35. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
Спасибо) Именно с циклом я и сделал)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|