Просмотр полной версии : Перехват клика
chatlano
27.06.2006, 22:23
Господа, подскажите плиз как решить проблему.
Есть страница с набором кнопок. При клике на любую из них нужно проверить условие и если условие выполняется то дать возможность отработать on realese кнопки, если же не выполняется то код в on realese выполняться не должен. Я понимаю что можно в каждом on realese проверить условие, но этого хотелось бы избежать. Существует ли во флеше механизм с помощью которого можно написать такой обработчик?
Повторюсь еще раз что речь идет не о listener для мыши а именно о запрете / разрешении прохождения события on realese в кнопках одной функцией для всех кнопок.
Спасибо.
а как иначе? где собираешся писать условие?
А почему тогда не в онрилиз? :-)
Можешь попробовать провернуть такой фокус:
//Какое-то условие
var ACT = false;
//Условие меняется при нажатии на вторую кнопку
Button2.onRelease = function ()
{
ACT = true;
trace ("OLD");
}
//Здесь переписываем событие
Button1.onRelease = function ()
{
if (ACT)
{
Button2.onRelease = function ()
{
trace ("NEW");
}
}
}
Для всех прогоняешь в цикле через eval и Enjoy.
Кстати, так подумал - Если на каждой кнопке висит уникальный код, то его можно на время только прятать в какое нибудь не исполнимое событие, например:
//Опять же условие
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;
}
chatlano
28.06.2006, 17:50
а как иначе? где собираешся писать условие?
А почему тогда не в онрилиз? :-)
Наверное мне не удалось правильно сформулировать что я хочу или скорее всего это во flash не возможно. Я не знаю на данный момент объектную модель flash, но в DOM браузера есть такая штука как обьект Event. С помощью Event я могу определить какой объект был clicked и написать одну функцию для всех кнопок на странице.
chatlano
28.06.2006, 17:55
Кстати, так подумал - Если на каждой кнопке висит уникальный код, то его можно на время только прятать в какое нибудь не исполнимое событие, например:
Спасибо за идею, попробую. Вопрос встречный, можно ли получить список всех buttons которые есть на сцене? Имен или ссылок на объекты.
Если кнопки - это 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")
chatlano
28.06.2006, 21:10
Спасибо, никак не привыкну что к объекты можно как массивы использовать :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.