![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну для начала, можно в классе контейнере подписаться на btnStatus у самого себя. При этом событие должно быть всплывающим.
Последний раз редактировалось etc; 09.08.2007 в 18:03. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Да. Ну если у тебя кнопки лежат в спрайте, то он и так диспетчер.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну вот мувиклип и сделать классом-контейнером.
|
|
|||||
|
ну вот код класса контейнера ( я сделал его спрайтом все таки)
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,787
|
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, время: 08:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|