Как передать параметр в пользовательский компонент, написанный на ActionScript - PullRequest
4 голосов
/ 27 ноября 2011

У меня есть пользовательский компонент, написанный на ActionScript. У него есть конструктор, который ожидает несколько аргументов.

Я хочу включить этот пользовательский компонент в mxml следующим образом:

Main.mxml

...
<custom:CustomActionScriptComponent/>  // Error line ..
..

Но, это показывает мне ошибку, говорящую

Error 1136: Incorrect number of arguments.  Expected 1.

Как передать параметр в файле MXML в этот пользовательский компонент ActionScript?

Ответы [ 2 ]

5 голосов
/ 27 ноября 2011

Как теги, MXML не поддерживает конструкторы классов.

Для вашего класса ActionScript вы можете разрешить инициализацию параметра по умолчанию:

    public function CustomActionScriptComponent(parameter:Object=null)
    {
        super();
    }

Затем реализовать обработчик события завершения создания вВаш MXML:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               creationComplete="creationCompleteHandler(event)">

    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            protected function creationCompleteHandler(event:FlexEvent):void
            {
                customActionScriptComponent.parameter = {};
            }
        ]]>
    </fx:Script>

    <custom:CustomActionScriptComponent id="customActionScriptComponent" />

</s:Application>
0 голосов
/ 01 декабря 2011

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

<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark">
    <fx:Declarations>
        <Timer xmlns="flash.utils.*" new="1000, 1" />
    </fx:Declarations>
</s:Application>

где new содержит аргументы конструктора.

Во всяком случае, я предоставляю ссылку на статью для тех, кто будет заинтересован в этом http://habrahabr.ru/blogs/Flash_Platform/128703/

...