如何将参数传递给ActionScript编写的自定义组件

时间:2011-11-27 06:02:13

标签: flash actionscript-3 flex flex3

我有一个用ActionScript编写的自定义组件。它有构造函数,期待一些参数。

我希望将此自定义组件包含在mxml中,如下所示,

Main.mxml

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

但是,它显示了一个错误说

Error 1136: Incorrect number of arguments.  Expected 1.

如何将MXML文件中的参数传递给该自定义ActionScript组件?

2 个答案:

答案 0 :(得分:5)

作为标记,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>

答案 1 :(得分:0)

嗯,实际上它是可能的,但为此你需要更改编译器。我读过关于这个的文章,但它是俄语的,我没有找到任何英文版。我没有自己做,但是人们能够编写这样的代码:

<?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/