Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.08.2009, 18:07
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 1  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
По умолчанию Рандомное включение мувиков.

Здравствуйте.
Такая ситуация. Есть допустим от 5 до 10 мувиков с вложенной в них анимацией. В каждом мувике, на последнем кадре анимации
Код:
stop();
.
Все мувики расположены на первом кадре сцены. Какой примерный код сможет запускать рандомно, с промежутком времени эти мувиклипы, точнее однократно включать анимацию в них? Эффект на подобии мерцания звезд на звездном небе.
Я вот пытался додумать, так и не пришло особо ничего в голову, т.к. АС еще плоховато знаю..
Буду очень благодарен, заранее огромное спасибо!

Старый 03.08.2009, 18:53
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Посмотрите в сторону Math.random(), setInterval и "001 Что это за скобочки? this["clip"] или как можно "обратиться" к клипу?"
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 03.08.2009, 20:35
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 3  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
Я бы рад в этом разобраться, но не получается толком. А время не терпит. Можно пожалуйста примерную подсказку?
Я мыслю в сторону: цикл - массив с инстанс неймами клипов - рандом плей "инстанс нейм из массива".
Дело в том, что каждый клип имеет в сцене свое четкое место, и пример со звездным небом не совсем точный, тут важно чтобы каждый уникальный клип оставаясь на определенном месте, проигрывал анимацию однократно. А проигрывание клипов было бы рандомным и поочередным.

Старый 04.08.2009, 10:14
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цикл не надо, он неудобен, он выполнится сразу, а вам нужен "промежуток времени" (можно конечно использовать связку цикл - setTimer, но зачем усложнять?). Вам сказали, нужно использовать setInterval. В хелпе есть примеры.
Пишите функцию, которая рандомно стартует мувики, и назначете для нее интервал. Пусть эта функция также определяет внутри мувиков переменные-триггеры - если старотовала мувик, то присваивает переменной 1.
Типа,

Код AS1/AS2:
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  
 }
};
То есть, когда рандомно берет следующий, то первым делом смотрит в нем переменную-триггер, если та уже = 1, то берет следующий мувик.

А создавать "массив с инстанс неймами клипов" вам не надо, флеш это уже сделал за вас, так как, например, если у вас ролики лежат на _root, то этот самый _root уже и есть "массив с инстанс неймами клипов", и к ним нужно просто обращаться, как я вам в функции написал (там может быть не this, а _root, если они на _root у вас, и вы хотите явно к _root обращаться).


Последний раз редактировалось mooncar; 04.08.2009 в 11:44.
Старый 04.08.2009, 11:53
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Acrossfy Посмотреть сообщение
Я бы рад в этом разобраться, но не получается толком. А время не терпит.
На охоту идти - собак кормить. (Собаку кормят не в тот день, когда надо идти на охоту). Пруфлинк.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 04.08.2009, 14:23
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 6  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
mooncar, спасибо большое за помощь и объяснение. Но вот вопрос возник. Когда функция срабатывает 20-ый раз, получается, что каждому(из 20-ти) мувиклипу присвоен тригер - 1. То есть каждый из клипов запускается однократно. После этого само собой мувики уже не запускаются. А как можно по выполнению условия count > total, очистить тригеры и запустить все заново?

Добавлено через 1 час 16 минут
Еще раз большое спасибо, вопрос решил сам)

Старый 04.08.2009, 18:33
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Хорошо.
Если использовать ту же функцию для повторного старта, то да, триггеры нужно очистить, хотя бы циклом (поставить маленький цикл по очистке после строки с clearInterval).
А если нет, то их можно стартовать когда угодно, через gotoAndPlay, триггеры привязаны конкретно к этой функции.


Последний раз редактировалось mooncar; 04.08.2009 в 18:35.
Старый 04.08.2009, 19:51
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 8  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
Спасибо) Именно с циклом я и сделал)

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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