我有一个用ActionScript编写的自定义组件。它有构造函数,期待一些参数。
我希望将此自定义组件包含在mxml中,如下所示,
Main.mxml
...
<custom:CustomActionScriptComponent/> // Error line ..
..
但是,它显示了一个错误说
Error 1136: Incorrect number of arguments. Expected 1.
如何将MXML文件中的参数传递给该自定义ActionScript组件?
答案 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/