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

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

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

Регистрация: May 2010
Адрес: Харьков
Сообщений: 12
По умолчанию Обращение к клипам

Ситуация такая: на поле выложены несколько клипов с именами f1, f2, f3,....
На каждом клипе в первом кадре стоит stop();
Хочу запустить их в случайном порядке

Код AS3:
var timer:Timer=new Timer(100);
 
timer.addEventListener(TimerEvent.TIMER, timerf);
timer.start();
 
function timerf(e:TimerEvent):void{
	var j=int(Math.random()*31);
	Object("f"+j).play();
	}
Как правильно в ним обратиться для запуска???

Старый 02.02.2011, 15:02
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 2  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
Занести в массив и оттуда дергать по случайному индексу, исходя из длины массива.

Старый 02.02.2011, 15:15
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 3  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Код AS3:
const NUM_CLIPS: int = 31;
const DEF_CLIP_NAME : String = "f";
var timer                   : Timer=new Timer(100);
 
timer.addEventListener(TimerEvent.TIMER, timerf);
timer.start();
 
function timerf(e:TimerEvent) : void{
  var clipNumber = int(Math.random()*NUM_CLIPS);
  var clipName   = DEF_CLIP_NAME  +  clipNumber; 
  var clip : MovieClip = getChildByName(clipName) as MovieClip;  
  clip.play();
}
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 02.02.2011 в 15:18.
Старый 02.02.2011, 15:16
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Ну или
Код AS3:
(getChildByName("f" + j) as MovieClip).play();
Добавлено через 31 секунду
Опередили немножко.
__________________
тут я

Старый 02.02.2011, 15:18
Pendulum вне форума Посмотреть профиль Отправить личное сообщение для Pendulum Найти все сообщения от Pendulum
  № 5  
Ответить с цитированием
Pendulum

Регистрация: May 2010
Адрес: Харьков
Сообщений: 12
как лучше занести клипы в массив.
я же не буду писать
Код AS3:
arr[1]=f1;
ar[2]=f2;
arr[3]=f3;
у меня их 31 штука???

Старый 02.02.2011, 15:19
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
for (var i:int = 0; i < 31; i++) arr[i] = getChildByName("f" + (i+1));
__________________
тут я

Старый 02.02.2011, 15:20
Pendulum вне форума Посмотреть профиль Отправить личное сообщение для Pendulum Найти все сообщения от Pendulum
  № 7  
Ответить с цитированием
Pendulum

Регистрация: May 2010
Адрес: Харьков
Сообщений: 12
КорДум, спасибо, все работает!!!

Старый 02.02.2011, 15:24
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 8  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
На этот раз опередили меня
Но я бы занес в вектор, чтобы можно было сразу из него делать старт, а не приводить каждый раз.
То есть как-то так.

Код AS3:
const NUM_CLIPS: int = 31;
const DEF_CLIP_NAME : String = "f";
var timer                   : Timer=new Timer(100);
var clips                    : Vector.<MovieClip> = new Vector.<MovieClip>();
 
for(var i : int = 0; i < NUM_CLIPS; i++){
  var clipName   = DEF_CLIP_NAME  +  i; 
  var clip : MovieClip = getChildByName(clipName) as MovieClip; 
  if(clip){
    clips.push(clip);
  }
}
 
 
timer.addEventListener(TimerEvent.TIMER, timerf);
timer.start();
 
 
 
function timerf(e:TimerEvent) : void{
  var clipNumber = int(Math.random()*clips.length);
  var clip : MovieClip = clips[clipNumber];
  clip.play();
}
И быстрее должно быть на несколько микрон.
Наверное, я слишком не люблю аррей в роли индексированного массива и слишком люблю вектор.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 02.02.2011 в 15:32.
Старый 02.02.2011, 15:28
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
ChuwY
По-хорошему, их надо в вектор помещать, конечно.
Код AS3:
private var vector:Vector.<MovieClip> = new Vector.<MovieClip>();
...
for (var i:int = 0; i < 31; i++) 
    vector.push(getChildByName("f" + (i + 1)) as MovieClip);
__________________
тут я


Последний раз редактировалось КорДум; 02.02.2011 в 15:36.
Старый 02.02.2011, 15:31
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 10  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
У меня дежа вю =D


Код AS3:
arr[i] = vector.push(...)
Замысловатая конструкция.

Я понял. Это чтобы потом обращаться вот так: *jokingly*

Код AS3:
var number : int = int(Math.random()*31);
var clip : MovieClip = vector[arr[number]-1]
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 02.02.2011 в 15:38.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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