|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2009
Сообщений: 30
|
Class, MovieClip, SimpleButton. Не срабатывает обработчик MouseEvent.CLICK
Присоединяю к классу клип, в котором 2 кадра. В кадрах - кнопки. В зависимости от значения некой переменной frame, происходит выбор кадра:
И в первом кадре, и во втором есть кнопка cancel_btn. Разница во внешнем виде только. Но по совершенно непонятной мне причине, кнопка не реагирует на событие нажатия мыши. Как будто бы оно не происходит. Спрашиваю обработчик: что такое dialBox.cancel_btn? Отвечает: simpleButton. То есть, кнопка точно видна скрипту. Уже голова почти разбита об стену - не понимаю, отчего это может быть. Перепробовала все вариации: называла кнопки в разных кадрах по-разному, добавляла стоп-кадры, даже удаляла кнопку из первого кадра, оставив только во втором... Ничто не помогло. Единственное, что понятно: если кадр один, тогда все отлично работает. Итого получается, что проблема в gotoAndStop(). Но какая может быть проблема в этом элементарном действии?.. Еще такой момент: кроме кнопки cancel_btn в этих кадрах есть и ok_btn. С этой кнопкой все в порядке. Разница между ok и cancel кнопками в том, что кнопка ok_btn в обоих кадрах одна и та же. По идее, этот факт должен исключить влияние на проблему метода gotoAndStop(), который сейчас главный подозреваемый... но какая проблема может быть другая? Кто-нибудь, по возможности, просветите меня в этом вопросе. Буду весьма-весьма признательна.
__________________
iStockPhoto-ведущий фотобанк |
|
|||||
может быть событие срабатывает не на этой кнопке, а на другом объекте клипа? Попробуйте
А в onCancelHandler через отладчик посмотрите на event.target |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Скорее всего тут дело вот в чем: Flash IDE генерирует поля класса, которые ссылаются на объекты дисплей-листа: это сделано для удобства. И вот поменяв кадр у клипа поле класса не затронется никак: и оно будет продолжать ссылаться на клип в первом кадре. Нужно доставать содержимое методами, для доставания контента.
Попробуйте вот так:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Обращаясь вот так: clip.cancel_btn мы будем ссылаться на некоторое поле cancel_btn, которое будет указывать всегда в одно место. Если мы вызовем gotoAndStop, скорее всего, это поле значения не изменит и будет до сих пор ссылаться в прошлый первый кадр.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Ну собственно да, я это и предложил - даже если не поможет, то хоть можно будет увидеть на каком объекте срабатывает клик.
Тигра - я имел ввиду зачем надо "as SimpleButton", если ИДЕ итак знает что это кнопка (судя по словам топикстартера) |
|
|||||
Регистрация: Feb 2009
Сообщений: 30
|
Клик срабатывает куда не кликни, event.target возвращает правильный объект.
А логичный и обнадеживающий код: (dialBox.getChildByName("cancel_btn") as SimpleButton).addEventListener(MouseEvent.CLICK, onClick); Эта ошибка и раньше иногда вылетала. Мол, вы пытаетесь присвоить метод несуществующему объекту. А иногда не вылетала - объект SimpleButton чудесным образом находился. Но почему-то вот не реагировал на нажатие мыши. Печаль сплошная Это же, кажется, такая элементарщина - передвинуться на заданный кадр! Думаю, ребята, если еще какая-нибудь идея на эту тему блеснет, скорее всего она будет рабочей Добавлено через 5 минут Цитата:
__________________
iStockPhoto-ведущий фотобанк |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Мне одному кажется, что программировать в кадрах перестали 6 лет назад?
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 16:02. |
|
« Предыдущая тема | Следующая тема » |
Теги |
class , gotoandstop , MouseEvent , movieclip , SimpleButton |
|
|