![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Так вроде овер\аут не как не должны трогать модель, а значит и обрабатывать эти события нужно в виде.
И наверное, если от клика происходят изменения только в виде, то и клик нужно в нем же обрабатывать. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Babylon, честно, не понял о чем ты. А ты предлагаешь, размещая в приложении контрол сложнее кнопки, например контрол для выбора цвета, подписываться на все его текстовые поля, кнопки, движки и экранчики с цветами прямо из основного Вида? В чем тогда, простите, смысл компонентов? А вообще в чем смысл абстрагирования в объекты/классы?
Не простому тупому контейнеру "ради контейнера", а родителю, имеющему Замысел относительно своего ребенка. Я приводил в пример составной контрол, а не пустой спрайт.
__________________
Reality.getBounds(this); |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
__________________
Отряд Котовскага |
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
Уолш, я в принципе не против твоего подхода. Единственная коллизия в том, что придется переписать слушателей при смене контейнера. Хотя может так и надо
. |
|
|||||
|
[+4 06.05.14]
|
Цитата:
package XXX { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.text.TextField; /** * ... * @author in4core progression lab */ public class EvaluteButton extends MovieClip { public var tf:TextField; private var _overColor:int = 0xFFFFFF; private var _outColor:int; private var _disableColor:int = 0x000000; private var _frames4:Boolean = false; public function EvaluteButton() { if (tf) { this._outColor = tf.textColor; this._disableColor = this._outColor; } this.mouseChildren = false; this.tabEnabled = false; this.buttonMode = true; this.mouseEnabled = true; this.gotoAndStop(1); this.addEventListener(MouseEvent.MOUSE_OVER , onMouseOver); this.addEventListener(MouseEvent.MOUSE_OUT , onMouseOut); } public function set frame4(b:Boolean):void { this._frames4 = b; this.addEventListener(MouseEvent.CLICK , onClick); } private function onClick(e:MouseEvent):void { if (this.currentFrame > 2) this.gotoAndStop(2); else this.gotoAndStop(4); } public function onMouseOver(e:MouseEvent):void { if (_frames4 && this.currentFrame > 2) this.gotoAndStop(4); else this.gotoAndStop(2); if (tf) tf.textColor = this._overColor; } public function onMouseOut(e:MouseEvent):void { if (_frames4 && this.currentFrame > 2) this.gotoAndStop(3); else this.gotoAndStop(1); if (tf) tf.textColor = this._outColor; } public function disable():void { this.buttonMode = false; this.mouseEnabled = false; this.tabEnabled = false; //this.gotoAndStop(2); this.alpha = 0.5 if (tf) tf.textColor = this._disableColor; this.removeEventListener(MouseEvent.MOUSE_OVER , onMouseOver); this.removeEventListener(MouseEvent.MOUSE_OUT , onMouseOut); } public function enable():void { this.buttonMode = true; this.mouseEnabled = true; this.alpha = 1 this.gotoAndStop(1); if (tf) tf.textColor = this._outColor; this.addEventListener(MouseEvent.MOUSE_OVER , onMouseOver); this.addEventListener(MouseEvent.MOUSE_OUT , onMouseOut); } public function setTextOverColor(color:int):void { this._overColor = color; } public function setTextOutColor(color:int):void { this._outColor = color; } public function setTextDisableColor(color:int):void { this._disableColor = color; } public function setColors(colors:Array):void { setTextOverColor(colors[0]); setTextOutColor(colors[1]); setTextDisableColor(colors[2]); } } }
__________________
Марк Tween |
|
|||||
|
Цитата:
Ты это точно о кнопочке, которая при наведении цвет меняет? ![]() Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Не понимаю, как можно писать this. перед приватами (а чьи еще-то?) и свойствами суперкласса (где должно быть super.), но не писать перед пабликами экземпляра (tf). Фантасмогория какая-то, чесслово.
Больше запутывает, хотя выглядит конечно ритмичненько) Я уж не опускаюсь до точки с запятой (видимо, для сеттера альфы есть свои правила) или странной инциализации только двух пресетных цветов из трех. Чисто по стилю, это импрессионизм какой-то. Добавлено через 6 минут тоже что-то не от мира сего. Удивляет, как сказал бы Боб Мартин. Добавлено через 10 минут А из каких соображений эти функции, типа public function setTextOverColor(color:int):void не были оформлены как сеттеры? Добавлено через 35 минут Сама идея про кнопку, которая рисуется ручками в ИДЕ как мувиклип, а потом надо кодом подобрать и назначить цвета текстфилду лейбла, который туда ручками же и засунут, а потом выставлен на общий доступ, типа "а теперь форматируйте меня как хотите, двигайте меня, делайте меня доступной для ввода текста" — феерично. Гибкость однозначно на высоте, в пику всему остальному. Что за гибкость, когда обработка дизабленного состояния захардкодена как изменение альфы всей кнопки? Обслуживание такой кнопки требует больше усилий и тестов "а то ли я сделал с ней?", чем написание этого кода gotoAndStop().
__________________
Reality.getBounds(this); |
|
|||||
|
[+4 06.05.14]
|
Wolsh совершенно не хочется комментировать код, кроме this - это мой стиль и он останется навсегда, ритмично и это мне нравится. А не хочется потому, что я не собирался показать именно код, а показывал структуру.
Вот вам чистая структура-код, но это ничего не меняет, смысл то остается. package pro.clonez.slots { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.text.TextField; /** * ... * @author in4core lab */ public class EvaluteButton extends MovieClip { public var tf:TextField; private var _isEnabled:Boolean = true; public function EvaluteButton() { this.mouseChildren = false; this.buttonMode = true; this.tabChildren = false; this.tabEnabled = false; this.addEventListener(MouseEvent.MOUSE_OVER , over ); this.addEventListener(MouseEvent.MOUSE_OUT , out, ); this.addEventListener(MouseEvent.CLICK , release, ); this.addEventListener(MouseEvent.MOUSE_DOWN , down ); } public function down(e:MouseEvent):void { this.gotoAndStop('down'); } public function release(e:MouseEvent):void { if (this.hitTestPoint(stage.mouseX , stage.mouseY)) { this.over(e); } else { this.out(e); } } public function out(e:MouseEvent):void { this.gotoAndStop('simple'); } public function over(e:MouseEvent):void { this.gotoAndStop('over'); } public function disable():void { this.removeEventListener(MouseEvent.CLICK , release); this.removeEventListener(MouseEvent.MOUSE_OVER , over); this.removeEventListener(MouseEvent.MOUSE_OUT , out); this.removeEventListener(MouseEvent.MOUSE_DOWN , down); this.mouseEnabled = false; this.buttonMode = false; this.gotoAndStop("inactive"); this._isEnabled = false; this.tf.textColor = 0x777777; } public function enable():void { this.addEventListener(MouseEvent.MOUSE_OVER , over ); this.addEventListener(MouseEvent.MOUSE_OUT , out); this.addEventListener(MouseEvent.CLICK , release); this.addEventListener(MouseEvent.MOUSE_DOWN , down); this.mouseEnabled = true; this.out(null); this.buttonMode = true; this._isEnabled = true; this.tf.textColor = 0x0; } public function get isEnabled():Boolean { return this._isEnabled; } } }
__________________
Марк Tween |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Кнопка на стейдж выложена?
Я за Вас переживаю, на самом деле. Извините за строгость, если не по душе.
__________________
Reality.getBounds(this); |
|
|||||
|
Не поленился же причесать
![]() Кстати, а hitTestPoint всегда работал с глобальными координатами? И сценарий, что при клике на кнопку её удаляют с дисплай листа тебе тоже в голову не приходил. Но уже лучше! Поломай голову, продолжай! Эту задачу можно решить ещё меньшим количеством кода, допуская меньше ошибок.
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:39. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| видимость , классы , композиция , методы , свойства |
|
|