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

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

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

Регистрация: Jan 2014
Сообщений: 57
Question как лучше сделать клик по кнопке ( любому другому клипу )

Увидел как друг пишет код для клика по кнопочкам -
он вешает EventListener на Stage, а потом слушает каждый клик, проверяя hitTestPoint-ом совпали ли координаты клика с определенным клипом на сцене, если да - то вызывает код соответствующей кнопки.
Я очень долго смеялся, т.к. для меня это чистая наркоманщина -
я вешаю EventListener-ы на сами клипы ( кнопки), ну и соответственно по клику вызываю нужную функцию для каждой кнопки.
Друг спорит и говорит, что его метод короче по кол-ву строк кода и удобнее. Я считаю, что это просто не логично.
Одним из контраргументов: если поверх такой кнопки отрисовать другой мувиклип или спрайт и произвести клик, то при совпадающих координатах hitTestPoint вернет true и код кнопки инициализируется, хотя это будет не нужно.
Друг в ответ сказал, что можно добавить код, который будет следить за тем, перекрывается ли кнопка другими компонентами ( что уже совсем костыль на мой взгляд).
Рассудите, пожалуйста. ))) Кто прав, и если прав я, то как донести суть. ))

Старый 14.02.2014, 01:15
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 2  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
Сделайте ему одну видимую кнопку на сцене и 100000000 за пределами сцены.

Старый 14.02.2014, 01:18
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 3  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Сделайте ему одну видимую кнопку на сцене и 100000000 за пределами сцены.
Вы не его друг?

Старый 14.02.2014, 02:09
PrincessRoma вне форума Посмотреть профиль Отправить личное сообщение для PrincessRoma Найти все сообщения от PrincessRoma
  № 4  
Ответить с цитированием
PrincessRoma

Регистрация: Jan 2014
Сообщений: 57
лол нет, это не он. )) Но я не понял мысли, можно поподробнее ? )

Старый 14.02.2014, 02:22
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
лол нет, это не он. )) Но я не понял мысли, можно поподробнее ? )
Просто я уточнил у Koopa, дающего сегодня просто сногсшибательные ответы, не Ваш ли он друг. Это с иронией.. А ответа на Ваш вопрос нет, можно делать всё и выбор зависит от меры помешательства на якобы совершенном коде. Чем универсальней код, тем он хуже и аргумент меньше кода, это как описание чувств одним словом. И лучший совет, который я много раз игнорировал, отказаться от универсальности и поверить в то, что идеального кода и подхода нет. Чем больше Вы будете погружаться в мир кода ГУРУ, тем больше будете убеждаться, что гениальное всегда просто.

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
JAVA стайл с одним обсервером-листенером?
HitTestPoint, как можно догадаться и без тестов, занимает больше процессорного времени, чем нативная реализация того же самого при определении мышиного события. Может быть и незначительно, но оптимизация складывается из мелочей.

Если Вашему другу так хочется реализовать механику с одним листенером, то пусть хранит ссылки на ДО (DisplayObject) и проверяет currentTarget с этими ссылками. Так он хотя бы сможет иметь возможность отписывать ДО от событий.

И да, как он сейчас отписывается от событий? Имеет тысячу флагов по одному на каждый ДО?
__________________
тут я

Старый 14.02.2014, 20:38
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
У меня схожий вопрос появился - все делают графику растровую, но Bitmap не ловит события мыши.
И в связи с этим вопрос - кто-нибудь пробовал использовать interactivePng для отказа от спрайтов и если да, то какие результаты? Или interactivePng это слишком грубо?

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
2 PrincessRoma
Два объекта (спрайта) на сцене - один перекрывает другой. Верхний спрайт прозрачный и нижний (пусть это будет кнопка) поэтому видим пользователем. Пользователь кликает по кнопке, которую видит. Получит ли кнопка событие клика при вашем подходе?
__________________
interplanety

Старый 14.02.2014, 21:11
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 9  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Korchy а зачем так делать? Должен же быть порядок с дисплей листе.

Старый 14.02.2014, 23:03
PrincessRoma вне форума Посмотреть профиль Отправить личное сообщение для PrincessRoma Найти все сообщения от PrincessRoma
  № 10  
Ответить с цитированием
PrincessRoma

Регистрация: Jan 2014
Сообщений: 57
Korchy - если имеете в виду случай, когда я кидаю EventListener-ы на каждый объект, то конечно нет. В этом и суть. И присоединяюсь к ответу Akopalipsis-а: должен быть порядок.

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

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

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


 


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


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