AS: Как обработать пользовательское событие в родительском компоненте - PullRequest
0 голосов
/ 06 февраля 2010

Я определил простой класс событий:

открытый класс NewMoveEvent расширяет событие {

public function NewMoveEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true)
    {
        super(type, bubbles, cancelable);
    }

}

}

Затем в пользовательском компоненте mxml я определил кнопку, которая вызывает его:

<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="ui.*" layout="absolute" width="682" height="412" title="Board">
<mx:Metadata>
    [Event(name="newformevent", type="events.NewMoveEvent")]
</mx:Metadata>
<mx:Script>
    <![CDATA[
        import events.NewMoveEvent;
        import config.Config;


        private function addNewUIComponent(event:Event):void
        {
            var e:NewMoveEvent = new NewMoveEvent("newformevent");
            dispatchEvent(e);
        }
    ]]>
</mx:Script>
<ns1:ChessBoard x="8" y="9" width="350" height="350" backgroundColor="0x99CCCC" moveId="0" name="chessboard" themeColor="#FFFFFF"/>
<mx:Button id="next" x="507" y="127" label="Next" click="addNewUIComponent(event)"/>
<ns1:PieceContainer x="363" y="10" width="292" height="51" items="{Config.piecesWhite}" id="white"/>
<ns1:PieceContainer x="362" y="69" width="292" height="51" items="{Config.piecesBlack}" id = "black"/>
<ns1:PasteBin x="363" y="306" width="292" height="53" backgroundColor="0x99CCCC" id="paste"/>
<mx:Button x="445" y="127" label="Save" name="save" enabled="false"/>

Нет из основного файла приложения. Я хочу установить обработчик события для этого события. Я легко могу сделать это из mxml

например.

Но я не могу сделать это в ActionScript (например, этот код не работает):

        private function addNewUIContainer(event:Event):void
        {
            var newBoard:UIContainer = new UIContainer();
                newBoard.addEventListener(NewMoveEvent.NEWFORMEVENT, addNewUIContainer);
        }

Компилятор выдает ошибку. Не понимаю почему.

ERROR

Доступ к возможно неопределенному свойству NEWFORMEVENT через ссылку со статическим типом Class.

И да, UIContainer - это класс mxml


Функция addNewUiContainer определена в основном файле (project.mxml)

1 Ответ

2 голосов
/ 06 февраля 2010

Не похоже, что вы определили public static const NEWFORMEVENT:String = "newformevent";

public class NewMoveEvent extends Event
{
    public static const NEWFORMEVENT:String = "newformevent";

    public function NewMoveEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true)
    {
        super(type, bubbles, cancelable);
    }

}

Это было?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...