PDA

Просмотр полной версии : Как узнать имя нажатой кнопки?


Maverick_
31.10.2006, 13:06
Всем привет!
Я делаю что то типа плана здания, и у меня там есть порядка 50 объектов. Мне необходимо чтобы при нажатии на объект о нем появлялась краткая информация. Все эти объекты являются кнопками, но не экземплярами, у каждой своё Instance Name вроде b0, b1, b2... Я хочу написать функцию obj_info(btn_name), которая в зависимости от переданного в нее имени кнопки btn_name, будет показывать ту или иную информацию.
Сначала думал что это все реализовать очень легко, но столкнулся с подводными камнями - не могу в событии кнопки On(Press){...} получить имя кнопки, чтобы отправить его как параметр функции. Пробывал свойство _name, но оно пустое:o.
Прошу помочь мне с этой проблемой, заранее спасибо.

P.S. Использую Flash MX 2004.

etc
31.10.2006, 13:31
Используй onRelease, а не древний on (release) {…}

Maverick_
31.10.2006, 13:37
to _etc
Пробывал. Если пишу этот код в начальном кадре сцены, то все работает отлично, а если нажимаю на кнопке и пишу в появившемся разделе, то не работает. В чем там может быть проблема?

BigDan
31.10.2006, 15:20
btn.onRelease=function(){
obj_info(this._name);
}

Maverick_
31.10.2006, 16:43
btn.onRelease=function(){
obj_info(this._name);
}

Да, так будет работать, но тогда мне придется 50 раз изменять там имя кнопки.Т.к. скорее всего в дальнейшем число объектов будет возрастать, то я думал может быть можно как нить сделать так чтобы просто повставлять один и тот же фрагмент кода?

Но даже такой способ нельзя назвать оптимальным..Может все таки можно как нибудь оптимизировать эти действия?

У меня в голове крутится идея создания класса моих объектов, у которых будет общий метод по выводу информации(грубо говоря перегруженный onRelease). Т.е. объектами класса будут являться символы-кнопки. Но как сделать это во Flash'е я понятия не имею, так как свое знакомство с ним только начинаю..
Может кто сталкивался с подобными проблемами?

MyXus
31.10.2006, 16:49
бжжж
1. если у кнопки есть идентификатор (_name) - он никуда не денется.
2. Но самым прекрасным способом было бы - генерить кнопки программно, сразу со всеми обработчиками, captions, позиционированием и анимацией.
3. сопоставить мувиклипу из библиотеки класс можно - там галочка такая есть в свойствах - AS2 класс. Он автоматически подцепится при помещении мувика на сцену.

etc
31.10.2006, 16:50
for..in попробуй. Только надо проверять, что имеешь дело с кнопкой.

Maverick_
31.10.2006, 17:37
MyXuS
Я согласен что генерировать кнопки было бы отлично, Но они все совершенно разные и находятся в черти знает каких местах сцены. Нереально..

Да нашел в свойствах преобразованияв кнопку сопоставление с классом, Но не соображу че там указывать нужно. Не подскажешь как правильно все указать.Вообще этот класс нужно создавать вручную, или может он создан уже?

MyXus
31.10.2006, 17:48
Класс пишется вручную. Но мануал по написанию классов тут писать неохота. Почитай хелп если умеешь по английски, если нет - пошарь форум.

Maverick_
31.10.2006, 18:02
MyXuS
Ок Спасибо!
Но тема не закрыта, кто че думает, высказывайтесь!

Maverick_
01.11.2006, 11:37
MyXuS
Я разобрался с классами, все отлично работает. Перегрузил событие onRelease так чтобы показывало инфу.Даже не придется код для каждой кнопки писать. Спасибо!