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

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

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

Регистрация: Jun 2006
Сообщений: 30
По умолчанию Перехват клика

Господа, подскажите плиз как решить проблему.
Есть страница с набором кнопок. При клике на любую из них нужно проверить условие и если условие выполняется то дать возможность отработать on realese кнопки, если же не выполняется то код в on realese выполняться не должен. Я понимаю что можно в каждом on realese проверить условие, но этого хотелось бы избежать. Существует ли во флеше механизм с помощью которого можно написать такой обработчик?
Повторюсь еще раз что речь идет не о listener для мыши а именно о запрете / разрешении прохождения события on realese в кнопках одной функцией для всех кнопок.
Спасибо.

Старый 27.06.2006, 22:59
MyXus вне форума Посмотреть профиль Отправить личное сообщение для MyXus Посетить домашнюю страницу MyXus Найти все сообщения от MyXus
  № 2  
Ответить с цитированием
MyXus
 
Аватар для MyXus

Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
а как иначе? где собираешся писать условие?
А почему тогда не в онрилиз? :-)

Старый 28.06.2006, 13:57
Vertax вне форума Посмотреть профиль Отправить личное сообщение для Vertax Найти все сообщения от Vertax
  № 3  
Ответить с цитированием
Vertax

Регистрация: Oct 2005
Сообщений: 207
Можешь попробовать провернуть такой фокус:

Код:
//Какое-то условие
var ACT = false;

//Условие меняется при нажатии на вторую кнопку
Button2.onRelease = function ()
{
	ACT = true;
	trace ("OLD");
}

//Здесь переписываем событие
Button1.onRelease = function ()
{
	if (ACT)
	{
		Button2.onRelease = function ()
		{
			trace ("NEW");
		}
	}
}
Для всех прогоняешь в цикле через eval и Enjoy.

Старый 28.06.2006, 14:37
Vertax вне форума Посмотреть профиль Отправить личное сообщение для Vertax Найти все сообщения от Vertax
  № 4  
Ответить с цитированием
Vertax

Регистрация: Oct 2005
Сообщений: 207
Кстати, так подумал - Если на каждой кнопке висит уникальный код, то его можно на время только прятать в какое нибудь не исполнимое событие, например:

Код:
//Опять же условие
var ACT = true;

//Кнопка которую мучаем
Button2.onRelease = function ()
{
	trace ("OLD");
}

//Кнопка при нажатии на которую меняем события
Button1.onRelease = function ()
{
	if (ACT)
	{
//Прячем событие
		Button2.onDragOut = Button2.onRelease;
		Button2.onRelease = function ()
		{
			trace ("NEW");
		}
	}
	else
	{
//Возвращаем событие
		Button2.onRelease = Button2.onDragOut;
	}
	ACT = !ACT;
}

Старый 28.06.2006, 17:50
chatlano вне форума Посмотреть профиль Отправить личное сообщение для chatlano Найти все сообщения от chatlano
  № 5  
Ответить с цитированием
chatlano

Регистрация: Jun 2006
Сообщений: 30
Цитата:
Сообщение от MyXus
а как иначе? где собираешся писать условие?
А почему тогда не в онрилиз? :-)
Наверное мне не удалось правильно сформулировать что я хочу или скорее всего это во flash не возможно. Я не знаю на данный момент объектную модель flash, но в DOM браузера есть такая штука как обьект Event. С помощью Event я могу определить какой объект был clicked и написать одну функцию для всех кнопок на странице.

Старый 28.06.2006, 17:55
chatlano вне форума Посмотреть профиль Отправить личное сообщение для chatlano Найти все сообщения от chatlano
  № 6  
Ответить с цитированием
chatlano

Регистрация: Jun 2006
Сообщений: 30
Цитата:
Сообщение от Vertax
Кстати, так подумал - Если на каждой кнопке висит уникальный код, то его можно на время только прятать в какое нибудь не исполнимое событие, например:
Спасибо за идею, попробую. Вопрос встречный, можно ли получить список всех buttons которые есть на сцене? Имен или ссылок на объекты.

Старый 28.06.2006, 18:24
Vertax вне форума Посмотреть профиль Отправить личное сообщение для Vertax Найти все сообщения от Vertax
  № 7  
Ответить с цитированием
Vertax

Регистрация: Oct 2005
Сообщений: 207
Если кнопки - это Movie Clip'ы, то:
Код:
for (i in _root)
{
	if (typeof(eval(i)) == "movieclip"){}
}
Если Button'ы, то:
Код:
for (i in _root)
{
	if (typeof(eval(i)) == "object"){}
}
Вместо _root'а укажи нужно тебе место.
Например: eval("_root.SuperKnopka")

Старый 28.06.2006, 21:10
chatlano вне форума Посмотреть профиль Отправить личное сообщение для chatlano Найти все сообщения от chatlano
  № 8  
Ответить с цитированием
chatlano

Регистрация: Jun 2006
Сообщений: 30
Спасибо, никак не привыкну что к объекты можно как массивы использовать

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

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

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


 


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


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