![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2002
Адрес: Днепропетровск, Украина
Сообщений: 7
|
Прошу прощения, если вопрос этот уже задавался и обсуждался, поиск я уже успел просмотреть, но прямого ответа не нашел.
В AS Reference написано, что когда для бутона вызывается on(), то this внутри вызова ссылается на текущую сцену. Можно ли как-то, без хардкодового обращения к названию инстанса кнопки, все таки обратиться к ее параметрам? Конкретней, я пытаюсь в кнопке btnStop сделать хинт на hover, и пишу такое: on(rollOver) { createTextField("txtHint",1, this._x+10, this._y+10, 0, 0); txtHint.autoSize = true; txtHint.text = " Press to Stop "; } Но вот this._x и this._y возвращают х и у для сцены, т.е. нули. Можно ли как-то добраться до х и у кнопки, без написания btnStop._x и btnStop._y? Не хотелось бы это делать, плохая практика кодирования, а меня это беспокоит в разработке флеш-приложений (я только начал в нем разбираться, но исследую возможность создания серьезных вещей, которые легко тестить и модифицировать). Заранее благодарен за ответ. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
можно например снаружи написать
btnStop.onRollOver = function () { createTextField("txtHint",1, this._x+10, this._y+10, 0, 0); txtHint.autoSize = true; txtHint.text = " Press to Stop "; } тогда роллОверная функция будет методом и this будет указывать куда надо... Последний раз редактировалось Nox Noctis; 23.07.2002 в 15:00. |
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
Noooooooox!!!!!
Я даже запостить не успел.
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
|
Регистрация: Jul 2002
Адрес: Днепропетровск, Украина
Сообщений: 7
|
Спасибо обоим, огромное
![]() А "снаружи" - это где? Мне надо еще время, чтобы въехать в структуру кода. Вариант, который кажется наиболее вероятным - "Actions for Frame 1 of Layer Name Layer 1". Так? Update: Попробовал, заработало!!! Действительно так и надо? В данном случае у меня одна сцена, один лейер и один кадр (вся жизнь происходит за счет программной анимации ходячего человечка вправо и влево). В более сложных случаях обработчики событий надо навешивать в первом кадре той сцены и того лейера, в который эти объекты положены (или, если создаются динамически, то в том же коде, где они и создаются), да? Последний раз редактировалось Notna; 23.07.2002 в 15:15. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
DeliMIter, спокойно, все хорошо
убери руку с затвора и верни предохранитель на место ![]() 2Notna "снаружи" - это в любом скрипте таймлайна, в котором у тебя лежит этот символ с кнопкой... ...номер кадра и название лэйера не имеют никакого значения - главное: — определить функцию ДО того, как она может быть использована — в кадре с этим скриптом кнопка для которой мы это пишем должна присутствовать ![]() Последний раз редактировалось Nox Noctis; 23.07.2002 в 15:19. |
|
|||||
|
Регистрация: Jul 2002
Адрес: Днепропетровск, Украина
Сообщений: 7
|
А кадр - это один лейер или все видимые в данный момент лейеры?
И еще, расхрабрюсь почувствовав реальную помощь, можно ли объявить function showHint(txt) и hideHint(), а потом написать: btnLeft.onRollOver = showHint("Go left"); btnRight.onRollOver = showHint("Go right"); и т.п. (ну, и с onRollOut тоже)? Я сделал, но почему-то функции showHint и hideHint вызываются в момент назначения события (трейсом проверил), а по самим событиям не вызываются ![]() -- Вообще, чувствую, надо мне создать класс btnWithHint, в котором хранить текст хинта, и мувик картинки (бутоны не текстом разнятся, а видом), и самому по этому мувику двигаться по разным событиям, а потом создать каждую кнопку как объект этого класса. Надо попробовать. Последний раз редактировалось Notna; 23.07.2002 в 15:35. |
|
|||||
|
Регистрация: Jul 2002
Адрес: Днепропетровск, Украина
Сообщений: 7
|
Получилось вот так:
function showHint(txt,btn) { ... } btnLeft.onRollOver = function() { showHint("Go left", this); } |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
> А кадр - это один лейер или все видимые в данный момент лейеры?
есть таймлайн. (цепочка кадров) слои в таймлайне нужны по большому счету только для удобства редактирования. все слои одного таймлайна проигрываются синхронно. > btnLeft.onRollOver = showHint("Go left"); > btnRight.onRollOver = showHint("Go right"); получается, что ты свойствам onRollOver и onRollOver объекта btnRight присваиваешь результат выполнения функций, а НЕ ссылки на функции ...а с классом попробуй может быть будет удобнее ![]() |
![]() |
Часовой пояс GMT +4, время: 19:55. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|