![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
|
Есть класс который наследуется от спрайта, является чилдом stage и подписывается на событие у stage
public class Panel extends Sprite
{
public function Panel()
{
this.addEventListener(Event.ADDED_TO_STAGE, onAdded);
}
private function onAdded(e:Event):void
{
stage.addEventListener(PanelEvent.PANEL_EVENT, addText);
...
}
...
}
hit.addEventListener(MouseEvent.CLICK, playClick);
private function playClick(e:MouseEvent):void
{
new PanelEvent("hello world!");
}
...
public class PanelEvent extends EventDispatcher
{
public static const PANEL_EVENT:String = "PanelEvent";
public var str:String;
public function PanelEvent(text:String)
{
str = text;
dispatchEvent(new Event(PanelEvent.PANEL_EVENT, true));
}
}
то всё работает. почему так происходит?
__________________
smival.com |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
PanelEvent нужно наследовать от Event а не от EventDispatcher.
И диспатчить событие все равно придется в DisplayObject, который находится в DisplayList. Последний раз редактировалось mre; 10.09.2008 в 12:33. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Константа PANEL_EVENT при таком имени должна содержать значение "panelEvent". А вообще, подобное название событие ни о чём не говорит разработчику. «Событие панели». Какое событие? Клик? Перемещение? Никакой информации, совершенно.
Имена событий в Flash Player не от балды написаны, они конкретно описывают происходящее событие. Ваше же — не описывает. |
|
|||||
|
Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
|
Вы не правы, как бы я тогда использовал dispatchEvent()?
Цитата:
![]()
__________________
smival.com |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А причем тут сам Event и метод dispatchEvent у EventDispatcher?
|
|
|||||
|
Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
|
Цитата:
Именно поэтому оно было названо так. Или "правила хорошего тона" не позволяют халтурить и в таких случаях? ![]() Ну товарищ mre посоветовал наследоваться от Event, это мне надо было бы потом создавать внутри класса диспатчер, отправлять событие, удалять диспатчер. В чем преимущество наследования от Event а не от EventDispatcher в этом случае?
__________________
smival.com |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Халтурить вообще нельзя.
Боже мой, Event — это событие, а EventDispatcher — тот, кто их рассылает. EventDispatcher не рассылает EventDispatcher-ы, а вы пытаетесь так сделать, непонятно, на каком основании. |
|
|||||
|
Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
|
Цитата:
можете посоветовать как надо на коде?
__________________
smival.com Последний раз редактировалось $mival; 11.09.2008 в 10:30. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Отсылаете вы Event, конечно, поэтому ваш код работает. А должны рассылать new PanelEvent(PanelEvent.PANEL_EVENT, true) как минимум.
Надо открыть документацию по событийной модели ActionScript и всё-всё там прочитать и понять. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|