![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Собственно очень странная проблема, и мне стыдно задавать такой вопрос,но я в лоб не вижу где косяк.
Имеется меню ( несколько кнопок ) часть из них как заголовки и при создании не подписываются на события ( на всяк случай говорю об этом, хотя понимаю краем глаза, что это не имеет значения к вопросу ) , другие же как реальные кнопки и подписываются на события мыши. И так MenuButton.as private static var _currentSelected:MenuButton = null; private function onClick(e:MouseEvent):void { if(_currentSelected) trace(_currentSelected._header.text); this._header.textColor = 0x990000; this.removeEventListener(MouseEvent.MOUSE_OVER , onOver); this.removeEventListener(MouseEvent.MOUSE_OUT , onOut); this.removeEventListener(MouseEvent.CLICK , onClick); if (_currentSelected) { _currentSelected.addEventListener(MouseEvent.MOUSE_OVER , onOver); _currentSelected.addEventListener(MouseEvent.MOUSE_OUT , onOut); _currentSelected.addEventListener(MouseEvent.CLICK , onClick); _currentSelected._header.textColor = 0x000000; } _currentSelected = e.currentTarget as MenuButton; } Описываю : Нажимаю первую кнопку, выделилась, события овера и аута не работают, другие функционируют в обычном режиме. Все окей. Нажимаю на другую, предидущая *вроде как* разблокируется , а эта переходи в состояние блокировки. , но когда перевожу мышку на предидущую ( которая ВРОДЕ как разблокировалась) , блокированная кнопка диспатчит событие OVER , а при отведении мышки диспатчит OUT. Не могу понять, где я ошибаюсь... Добавлено через 13 минут тема закрыта, реально туплю
__________________
Марк Tween |
|
|||||
|
Цитата:
1. Методы публичными делать не надо. Они все приватные, как описано выше. Почему ?! Сам первый раз задумался об этом, но если ты в классе А имеющий приватные методы, создаешь статическую переменную B того же класса, то все приватные методы B видны, как публичные для этого класса. 2. Удобнее в сто раз, но не получится сделать через моусЕнаблед вот почему
__________________
Марк Tween |
|
|||||
|
Цитата:
Out - gotoAndStop(1); Click - gotoAndStop(3); Все 3 кадра ПОЛНОСТЬЮ разные. Ну и как быть ? Аут все портить будет полюбому
__________________
Марк Tween |
|
|||||
|
дада, будут портить
я просто игрался на таком примере public class MenuButton extends Sprite { private static var _currentSelected:MenuButton; public function MenuButton() { draw(0xC0C0C0); addEventListener(MouseEvent.CLICK, onClick); addEventListener(MouseEvent.ROLL_OVER, onOver); addEventListener(MouseEvent.ROLL_OUT, onOut); } private function draw(clr:uint):void { graphics.clear(); graphics.beginFill(clr); graphics.drawRect(0, 0, 60, 20); } private function onOut(e:MouseEvent):void { draw(0xC0C0C0); } private function onOver(e:MouseEvent):void { draw(0x808080); } private function onClick(e:MouseEvent):void { filters = [new GlowFilter()]; mouseEnabled = false; if (_currentSelected) { _currentSelected.mouseEnabled = true; _currentSelected.filters = []; } _currentSelected = this; } } |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Есть еще одна причина кстати. Есть такой принцип дизайна интерфейсов для списков, который гласит, что на маусовер должны визуально реагировать все элементы списка, даже дизабленные. Нажмите на обычное меню приложения в винде, например пункт Edit, или любой другой, в котором есть дизабленные пункты, и проведите мышью. Дизабленные кнопки тоже отрабатывают ховер, но конечно в своей стилевой гамме. Это нужно по одной простой причине, о которой многие флэш-дизайнеры GUI забывают: меню и прочие списки листаются клавиатурой, а не только мышью. При этом курсор мыши остается стоять на месте, а выделение переходит с элемента на элемент. Если дизабленные пункты никак не будут визуализировать выделение, юзер может его потерять из виду.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|