![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2012
Сообщений: 131
|
Цитата:
листенер на клик у кнопки - один! =) листенер на лэйауте - это листенер на лэйауте, но не на кнопке. и внутренний клик эвент в кнопке всего лишь диспетчит какое-либо событие, как правило такое же. извне - слушатель на одно событие - один. не надо пудрить людям мозги. этот форум будут читать и новички - а вы им мозги запудриваете. Добавлено через 42 минуты Вот вам пример стандартной кнопки. Создаётся такая кнопка в Flash CS ручками послойно из графических ресурсов. Отрисовывается hitArea для каждой, если кнопки разные. Соответственно, имена полей - так же проставляются вручную ( по дефолту - 4 лейбла на 4 кадрах, 1 - для hitArea, 1 - для текстового поля. Вешаются листенеры на такую кнопку как и на обычный SimpleButton. package ru.domain.project.view.gui.buttons { import flash.display.*; import flash.events.*; import flash.text.*; /** * ... * @author Frost */ public class MyButton extends EventDispatcher { private var hitArea:MovieClip; private var layout:MovieClip; private var _enabled:Boolean; public function MyButton(mc:MovieClip) { layout = mc; if (layout.getChildByName('hit') == null) { trace('MYBTN_ERROR: Cant find hit layer in MovieClip: ' + mc.name); return; } hitArea = layout.getChildByName('hit') as MovieClip; enabled = true; } private function turnOn():void { hitArea.buttonMode = true; hitArea.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); hitArea.addEventListener(MouseEvent.ROLL_OVER, onRollOver); hitArea.addEventListener(MouseEvent.ROLL_OUT, onRollOut); hitArea.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); hitArea.addEventListener(MouseEvent.CLICK, onClick); layout.gotoAndStop('up'); } private function turnOff():void { hitArea.buttonMode = false; hitArea.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); hitArea.removeEventListener(MouseEvent.ROLL_OVER, onRollOver); hitArea.removeEventListener(MouseEvent.ROLL_OUT, onRollOut); hitArea.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); hitArea.removeEventListener(MouseEvent.CLICK, onClick); layout.gotoAndStop('disabled'); } public function get enabled():Boolean { return _enabled; } public function set enabled(val:Boolean):void { _enabled = val; (_enabled == true) ? turnOn() : turnOff(); } public function text(txt:String):void { var tf:TextField = layout.getChildByName('tf') as TextField; formatTextField(tf, txt); } private function formatTextField(tf:TextField, e:String):void { tf.text = e; tf.selectable = false; //some other format settings } private function onClick(e:MouseEvent):void { dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } private function onRollOver(e:MouseEvent):void { layout.gotoAndStop('over'); dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER)); } private function onRollOut(e:MouseEvent):void { layout.gotoAndStop('up'); dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT)); } private function onMouseUp(e:MouseEvent):void { layout.gotoAndStop('up'); } private function onMouseDown(e:MouseEvent):void { layout.gotoAndStop('down'); } } } |
![]() |
Часовой пояс GMT +4, время: 04:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|