在mxml中创建接口对象

时间:2010-09-07 20:59:04

标签: flex flash mxml

假设我有一个界面

public interface IFoo {
   ...
}

我有几个实施类

public class Foo implements IFoo {
    ...
}

...

public class Bar implements IFoo {
    ...
}

...

public class Baz implements IFoo {
    ...
}

我想在MXML中像这样引用IFoo

<ns:IFoo id="myfoo"/>

并让它在工厂运行时实例化。

然而,编译器不允许我这样做 - 它试图在生成的ActionScript中执行“new IFoo”。

如何解决这个问题?如何在MXML中纯粹使用界面和工厂?

3 个答案:

答案 0 :(得分:0)

您可以使用组件根节点中的implements="IFoo"属性在MXML组件中实现接口。

修改

抱歉,我误解了你的问题。我不知道在纯mxml中实现工厂的方法。我猜你必须使用Actionscript或mxml状态来实现类似的行为。

答案 1 :(得分:0)

结帐ClassFactory。这就是项目渲染器的实例化方式。

答案 2 :(得分:0)

声明MXML子实例实例化该类型的对象 - 您不能简单地在MXML中声明属性而不将实例与其关联。

鉴于此 - 没有办法实现相当于

public var myFoo:IFoo;
在您的MXML中

正如James指出的那样,你可以使用ClassFactory来实现以下目标:

<mx:ClassFactory class="{Foo}" id="fooFactory" />

但您需要致电fooFactory.newInstance()以获取IFoo