|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Ну для начала, можно в классе контейнере подписаться на btnStatus у самого себя. При этом событие должно быть всплывающим.
Последний раз редактировалось etc; 09.08.2007 в 18:03. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Да. Ну если у тебя кнопки лежат в спрайте, то он и так диспетчер.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Ну вот мувиклип и сделать классом-контейнером.
|
|
|||||
ну вот код класса контейнера ( я сделал его спрайтом все таки)
package Classes{ import flash.events.Event; import Classes.ConstructorEvents; import flash.display.Sprite; public class ConstructorContainer extends Sprite { private var event:ConstructorEvents; public function ConstructorContainer() { event = new ConstructorEvents(ConstructorEvents.BROADCAST_ALL);; addEventListener(ConstructorEvents.BTN_STATUS, broadcastMess); } public function broadcastMess(evt:Event) { //обращаясь конкретно к экземплярам я могу передать событие, но нельзя ли передать всем сразу? this.startAgain.dispatchEvent(event) this.changeBasic.dispatchEvent(event) } } } } |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
package Classes{ import flash.events.Event; import Classes.ConstructorEvents; import flash.display.Sprite; public class ConstructorContainer extends Sprite { public function ConstructorContainer() { addEventListener(ConstructorEvents.BTN_STATUS, broadcastMess); for (var i:uint = 0;i < this.numChildren;i++) { var child:MenuButton = this.getChildAt(i) as MenuButton; if (child) { child.addEventListener('broadcastAll', child.broadcastAllHandler); } } } public function broadcastMess(evt:Event) { dispatchEvent(new ConstructorEvent('broadcastAll')); } } } } package Classes{ import flash.events.Event; public class ConstructorEvent extends Event { public static const BTN_STATUS:String = "btnStatus"; public static const BROADCAST_ALL:String = 'broadcastAll'; public var menuButton:MenuButton; public function ConstructorEvent (type:String, bubbles:Boolean = false) { super(type, bubbles); } } package Classes{ import flash.display.MovieClip; import flash.events.Event; import Classes.ConstructorEvents; public class MenuButton extends MovieClip { public function MenuButton() { addEventListener(ConstructorEvents.BTN_STATUS,onStatus); addEventListener("click",onClick); addEventListener("rollOver",onRollOver); addEventListener("rollOut",onRollOut); } private function onClick(evt:Event):void { var event:ConstructorEvent = new ConstructorEvent(ConstructorEvent.BTN_STATUS, true); dispatchEvent(event); } private function onRollOver(evt:Event):void { } private function onRollOut(evt:Event):void { } public function onStatus(evt:Event):void { trace(evt.target.name); } public function broadcastAllHandler(event:ConstructorEvent):void { if (event.menuButton != this) { trace(this.name); } } } } |
|
|||||
контейнер слушает кнопки, кнопки слушают контейнер - все оч просто
|
Часовой пояс GMT +4, время: 22:20. |
|
« Предыдущая тема | Следующая тема » |
|
|