|
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Связка двух объектов
Есть два объекта, оба обрабатывают событие нажатие мыши , при нажатии любого из этих двух объектов они оба меняют свою цветовую альфу(после определенного периода альфа возвращается в начальное положение).
Теперь если бы в приложении было бы всего два таких объекта то тут бы и проблем не было( накидал в оба обработчика противоположный объект на уменьшение альфы и все), но когда их больше 100 не делать же нам 100+ функций "парности объектов". Я пришел к такому выводу : protected function eNum(num:Number):void{ var arrNumG:Array = [btnG0,btnG1,btnG2,btnG3]; var arrNumB:Array = [btnB0,btnB1,btnB2,btnB3]; var pushObjG:Object = new Object(); var pushObjB:Object = new Object(); pushObjG = arrNumG[num]; pushObjB = arrNumB[num]; // ну и дальше что хотим то и делаем с ними с первым и вторым объектом, например: pushObjG.visible = false; pushObjB.visible = false; } 1. если объектов больше 100+ а то и больше я мягко говоря "устану" вписывать массив все объекты по правильному порядку 2.я на каждый объект вписываю в событие уже определенную цифру вот так click="eNum(1)", ( да у меня компоненты ну суть остается та же ) 3.я не думаю что это вообще правильное решение Кто сталкивался с такой проблемой ? Или может кто подскажет как "связать(обьеденить)" два объекта( а то и больше ) ? |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
|
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
private function statClick(event:Event):void{ if(event.currentTarget.id = 1_obj || event.currentTarget.id = 2_obj){ 1_obj.alpha = 0.5; 2_obj.alpha = 0.5; } в моем случае создать в А экземпляр В , вообще не вариант :\ |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Можно зайти немножечко дальше, но я пока сам не знаю на сколько это будет правильно, у меня это вопрос дня, который яя задам чуть позже.) А как у Вас в примере, это неправильно, проверять сто ифоф из одного нажатия. Вот самый лучший вариант - это наследование или интерфейс. |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
Цитата:
Я тоже думаю что в эту сторону стоит копать, но пока идей нет |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
я как всегда поспешил.) Если Вам надо из более чем ста обьектов сделать пары, то наверное Вы правильно сделали. Вот если бы при нажатии на один у ста должно что то измениться, то такой подход был бы утомителен. Но если именно по парам, то по другому то и не как наверное.
|
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Вот интересно что если на все рабочее пространство "раскидать кружочки" рандомом( пусть они все одинакового цвета и размера (допустим в 3 px) ), и создать их порядка нескольких тысяч массивом, и при нажатии на любой кружочек, с этих тысячи кружков мелькнул(подсветился) "брат кружка, клацнутого кружка"
Вот мне кажется реализация этого примера подойдет мне, только что их будет объединять...("братьев")? Еще я размышлял возможно ли сделать так : Ну ясное дело что так нельзя) ну идея такая тоже присутствовала.... мб такая реализация возможна только другим путем ? Последний раз редактировалось GrafMine; 15.10.2013 в 19:58. |
|
|||||
Не очень вчитывался, по этому не судите, если не подойдет...
Решение навскидку: 1) Завести себе словарь (http://help.adobe.com/ru_RU/FlashPla...ictionary.html). 2) Создавать парные объекты вместе. 3) Пихать каждый объект в словарь как ключ, а значением будет его брат. Далее в обработчике просто делаете свое грязное дело с (event.target as MyObj) и (dict[ event.target ] as MyObj) |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
как альтернативный вариант - да, как подход к вопросу на 1000+ объектов - нет.
Пункт 3 у Вас сильно "мучительный" и требует присваивание " вручную" к каждому объекту. И на мой взгляд, мой пример в первом посте более универсален в плане учета громадности в 100 объектов. ( могу ошибаться ) |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Если все обьекты разные, то Вы не сможете создать их даже циклом. Единственное что можно сделать, это создать два массива, один для одного типа обьектов, а другой для другого. Потом циклом их загнать в третий массив чередуя. Потом при клике искать таргет в третьем массиве и узнавать его номер. Если номер четный, то выбираем его и его брата, который равняется на порядок меньше. |
Часовой пояс GMT +4, время: 02:24. |
|
« Предыдущая тема | Следующая тема » |
|
|