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

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

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

Регистрация: Sep 2008
Сообщений: 7
По умолчанию hitTest выпадающей части ComboBox

Здравствуйте!
Как заставить выпадающую часть ComboBoxа реагировать на hitTest?
Вот для примера.
Код AS1/AS2:
onMouseDown = function ():Void {
	if (cbx.hitTest(_root._xmouse, _root._ymouse, true)) {
		trace("Попал");
	} else {
		trace("Мимо");
	}
};

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
В принципе у комбобокса внутри есть некий мувик boundingBox_mc, вероятно как-то связанный с его границей.
Код AS1/AS2:
for (i in cbx) 
{
	trace(i + '  ' + cbx[i]);
}
Но можно ли с ним работать - неизвестно, хиттест на него не срабатывает.

Решение только такое придумывается - проверять hitTest на область, ограниченную cbx._width и cbx._height - эти свойства вроде бы правильно отображают видимые размеры комбобокса при работе с ним.
__________________
Идите первым!


Последний раз редактировалось mooncar; 15.08.2010 в 20:29.
Старый 15.08.2010, 22:08
adsl66 вне форума Посмотреть профиль Отправить личное сообщение для adsl66 Найти все сообщения от adsl66
  № 3  
Ответить с цитированием
adsl66

Регистрация: Sep 2008
Сообщений: 7
Код AS1/AS2:
onMouseDown = function () {
	trace(cbx._height);
};
Да действительно показывает изменение в высоте, но только на открытие ComboBoxа. После его сворачивания показывает ту же высоту что и в развёрнутом состоянии.
Или я что-то не понимаю?

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Да, поторопился я сказать по поводу "правильно отображают"...
Действительно, значение cbx._height после открытия комбобокса остается фиксированным, видимо, максимальным.
Даже если обернуть комбобокс в мувик и использовать высоту последнего, она также после открытия остается той же самой.
Идей больше нет.
Разе что свой комбобокс создать, с предсказуемыми свойствами.
__________________
Идите первым!


Последний раз редактировалось mooncar; 15.08.2010 в 22:54.
Старый 15.08.2010, 23:49
adsl66 вне форума Посмотреть профиль Отправить личное сообщение для adsl66 Найти все сообщения от adsl66
  № 5  
Ответить с цитированием
adsl66

Регистрация: Sep 2008
Сообщений: 7
Тогда может быть мой частный случай можно решить другим путём.
Вверху карты города, которая масштабируется колёсиком и перемещается нажатой левой кнопкой мышки присутствует список улиц в ComboBoxе. И вот когда список разворачивается, любые манипуляции с ползунком списка передаются также и на карту. Переставить список так чтоб он не пересекался с картой некуда.
Кроме hitTestа пробовал в условиях масштабирования и перемещения отслеживать высоту ComboBoxа, но тогда после сворачивания списка из за того что высота не возвращается масштабирование и перемещение перестаёт работать.
Пробовал ComboBoxу по клику подложить под выпадающую часть какой нибудь клип и потом отслеживать его. Но тогда список перестаёт разворачиваться, не помогает даже если назначить это событие родительскому клипу.

Заранее огромное спасибо всем кто откликнется.

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

Регистрация: Feb 2008
Сообщений: 560
Как вариант... периодически отрисовывать список в битмапдату и проверять через getPixel в определенной позиции цвет, где список выпадает. Если цвет не белый - список выпал - блокировать карту.

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
С битмапой - это как-то не по-человечески. Давайте-ка танцевать "от печки" и рассматривать событийную модель.

Автор, вам надо, чтобы если юзер начать использовать комбобокс, функции для работы с картой не работали.
И когда юзер закрывал бы комбобокс, эти функции опять бы включались.

Открываем хелп, видим, что у комбобокса есть подходящие события:
ComboBox.open (Broadcast when the drop-down list begins to open.) и СomboBox.close (Broadcast when the list of the combo box begins to retract.)

Назначим на их обработку функции, которые бы переводили бы некий разрешающий триггер на false (когда происходит ComboBox.open) и на true (для СomboBox.close).

Останется в функциях для управления картой ввести проверку на этот триггер.
Если он будет в состоянии false, функция управления картой не будет выполнять свои действия.
__________________
Идите первым!


Последний раз редактировалось mooncar; 16.08.2010 в 02:03.
Старый 16.08.2010, 02:23
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вот пример.
На карте используем колесико для изменения масштаба.
Как только открываем комбобокс, карта перестает реагировать на колесико.
Закрываем - карта опять реагирует на колесико.
__________________
Идите первым!

Старый 16.08.2010, 17:10
adsl66 вне форума Посмотреть профиль Отправить личное сообщение для adsl66 Найти все сообщения от adsl66
  № 9  
Ответить с цитированием
adsl66

Регистрация: Sep 2008
Сообщений: 7
По приведённому примеру сделал изменения. Всё работает отлично.
Огромное спасибо.

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

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

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


 


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


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