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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.07.2008, 19:40
Kroli4eg вне форума Посмотреть профиль Отправить личное сообщение для Kroli4eg Найти все сообщения от Kroli4eg
  № 1  
Ответить с цитированием
Kroli4eg
[+2 24.06.08]
 
Аватар для Kroli4eg

Регистрация: Mar 2008
Адрес: Dubai
Сообщений: 34
По умолчанию Массив имен клипов

Доброго времени суток. У меня возникла задачка, не знаю с какого бока подойти. Допустим у меня есть массив содержащий имена клипов. Как мне сделать так чтоб во время выполнения программы клипы из этого массива могли слушать события. Т.е. грубо говоря у меня есть клипы по нажатию на которые происходят одни и те же события. И я не хочу на каждый клип писать mc1.onPress = function().....mcn.onPress = function(), а загнать эти клипы в массив и потом их от туда подставлять. Возможно ли такое? если да то подскажите в какую сторону копать, потому что я честно говоря даже не знаю по каким слоавам осуществлять поиск чтоб найти что то подобное.

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

Регистрация: May 2008
Сообщений: 476
Здравствуйте Kroli4eg!

Если я правильно понял чего Вы хотите, то Вы сможете добиться цели с помощью этого (синтаксис АС1):

Код:
for (var i:Number = 1;i<=20;i++)
{
	this.attachMovie("Symbol 1",i,this.getNextHighestDepth());
	this[i]._x=random(300);
	this[i]._y=random(300);
}


MovieClip.prototype.onPress = function():Void
{
	trace(this._name);//this здесь указывает на клип на котором произведен щелчок мыши
}
Кстати имена клипов в примере - числа от 1 до 20. Не пугайтесь.

Удачи.
Вложения
Тип файла: rar Untitled-1.rar (3.4 Кб, 54 просмотров)
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось Alex_beginner; 12.07.2008 в 20:03.
Старый 13.07.2008, 13:23
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 3  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Если я правильно понял, то тебе что то подобное нужно:

Код:
       button_index=5 // количество будущих кнопок
       mas=new Array()
       mas=["Петя",10,01,"Bася","Hello"]
for(i=0;i< button_index;i++)
{          attachMovie("button","button_onPress"+i,i)
               _root["button_onPress"+i]._x=100 
               _root["button_onPress"+i]._y=50*i+100
}
_root.onMouseDown = function() { 

for(j=0;j< button_index;j++)
{ 
if(_root["button_onPress"+j].hitTest(_xmouse,_ymouse)) { //проверяем
	 trace("Содержание массива с индексом "+j+" = "+mas[j])
}}}
Вложения
Тип файла: zip button.zip (4.6 Кб, 50 просмотров)

Старый 13.07.2008, 13:53
Kroli4eg вне форума Посмотреть профиль Отправить личное сообщение для Kroli4eg Найти все сообщения от Kroli4eg
  № 4  
Ответить с цитированием
Kroli4eg
[+2 24.06.08]
 
Аватар для Kroli4eg

Регистрация: Mar 2008
Адрес: Dubai
Сообщений: 34
Спасибо за помощь. Мне скорее всего подходит вариант Alex_beginner. Скажите плз если у меня мои клипы вложены в один клип. то чтобы к этим клипам достучаться вашим способом мне нужно использовать свойство _proto_ чтоб выстроить цепочку, или меня не в ту степь понесло?

Старый 13.07.2008, 14:02
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 5  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Код:
this.clip[i]._x=random(300);
clip - в него вложены ваши клипы

Старый 13.07.2008, 14:06
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код Alex_beginner плох тем, что теперь абсолютно все мувиклипы будут кнопками. Поэтому надо сделать так:
Код в исходнике замените на
Код:
for (var i:Number = 0; i <= 20; i++) {
	var mc:MovieClip = this.attachMovie ("Symbol 1", i, this.getNextHighestDepth ());
	mc._x = random (300);
	mc._y = random (300);
}
А внутри клипа, который будте аттачится, напишите
Код:
#initclip
function Clip () {
}
Clip.prototype = new MovieClip ();
Object.registerClass ("Symbol 1", Clip);
Clip.prototype.onPress = function ():Void  {
	trace (this._name);
	//this здесь указывает на клип на котором произведен щелчок мыши
};
#endinitclip
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: May 2008
Сообщений: 476
To iNils: В состав задачи не входили аспекты и ньюансы. Поэтому, я оставил за собой право представить примерный базовый код. Ежели после тестов автор задачи сочтет, что в данном конкретном случае необходимы исключения как то, что требуется разделять одни клипы от других, я неприменно постараюсь представить модифицированный код, учитывающий новые представленные факты.

Kroli4eg!


Можно сделать и в АС2!

Сделайте свой класс потомком от MovieClip, допустим MyClass в котором переопределите обработчик требуемого события. Далее создавайте ваши клипы, те что должны иметь общий обработик события как экземпляры от MyClass, а те клипы у которых не должно быть общего обработчика как экземпляры от MovieClip, тогда Вы сможете избежать ситуации, любезно описанной iNils'ом.
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось Alex_beginner; 13.07.2008 в 14:32.
Старый 13.07.2008, 17:54
Kroli4eg вне форума Посмотреть профиль Отправить личное сообщение для Kroli4eg Найти все сообщения от Kroli4eg
  № 8  
Ответить с цитированием
Kroli4eg
[+2 24.06.08]
 
Аватар для Kroli4eg

Регистрация: Mar 2008
Адрес: Dubai
Сообщений: 34
что то я честно говоря совсем запутался. Вы не могли бы на простеньком примере показать, на пальцах так сказать 0:-) Мне обязательно создавать клипы, если нет то как их превязать к MyClass?
вот как я это понял, но что то я в этом коде напартачил, не работает :-(
Код:
function new_clip():Void {} //sozdaem klass k kotoromu budut otnositsa muviki
new_clip.prototype.__proto__ = MovieClip.prototype;
new_clip.prototype.constructor = MovieClip; // delaem podklassom MovieClip
var arr=[]; // sobstvenno massiv s imenami muvikov
arr[0] = "palm_d";
arr[1] = "palm_j";
for (i = 0; i < arr.length; i++)
{
	this.bigmap[arr[i]].__proto__ = new_clip.prototype;// delau moy klip klassa new_clip
           this.bigmap[arr[i]].constructor = new_clip;
}
new_clip.prototype.onPress = function():Void 
{
	trace(this._name);//this здесь указывает на клип на котором произведен щелчок мыши
}
в итоге onPress не срабатывает


Последний раз редактировалось Kroli4eg; 13.07.2008 в 19:13.
Старый 13.07.2008, 18:19
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 9  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Alex_beginner Посмотреть сообщение
В состав задачи не входили аспекты и ньюансы.
Голова существует не только для того чтобы видеть, ну и думать.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 13.07.2008, 18:29
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 10  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Kroli4eg!

По Вашей просьбе прилагаю наглядный примерчик.

В примере, зеленые клипики - обычные клипы, без обработчика onPress, синие с обработчиком onPress. По нажатию синих клипов в панели Output выводятся их имена (опять же цифры).

Порядок создание примера:

1. Создаю класс MyClass (см. в папке вложения) - подкласс MovieClip.
2. В нем переопределяю обработчик onPress
3. Сохраняю класс в папке AS_Class. Не забываю прописать путь к классу в "предпочтениях".
4. Создаю клип-символ (например кружок). В свойствах символа на вкладке Linkage Properties (свойства связывания) активизирую галочку Export for ActionScript При этом станет доступной строка AS 2.0 Class. В нее
нужно ввести имя класса, с которым должен быть связан символ. В нашем случае это MyClass.
5. Далее создаю аналогичный клип-символ не связывая его с каким-либо классом
6. Аттачу те и другие по 11 штук каждого вида, располагая их рандомно на площади 300х300 пикселей.
7. Вот собственно и все.

[iNils: для подобных вещей существует приват]
Вложения
Тип файла: rar Общий обработчик.rar (5.4 Кб, 44 просмотров)
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось iNils; 13.07.2008 в 19:19.
Создать новую тему Ответ Часовой пояс GMT +4, время: 22:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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