有没有这样的事情,作为一个MXML接口
这可能是一个愚蠢的问题,所以提前道歉,如果是。 我想知道是否MXML中的接口equivilant?有没有这样的事情,作为一个MXML接口
每次我觉得需要使用一个接口时,我总是最终做出一个动作而不是一个MXML文件,因为我不知道是否/如何做到。
例如,我打算使用基于vbox的组件。我有4个不同的实现,所以我决定使用一个接口。但不是制作一个MXML接口并实现它,我已经在as3中创建了一个接口。我已经在4个不同的类中实现了这个接口。
然后,我制作了4个不同的vbox容器,每个容器都带有脚本标记中不同的实现之一。
这听起来像是一种合理的方法,还是我在这里反对谷物?
编辑 - 添加例子
接口
package components.content.contents
{
public interface IContent
{
function init():void;
function doSearch():void
function setSearchTerm(term:String):void
}
}
执行情况(1 4)
package components.content.contents
{
public class ClipContent extends AbstractContent implements IContent
{
public function ClipContent()
{
}
public function init():void
{
}
public function doSearch():void
{
}
public function setSearchTerm(term:String):void
{
}
}
}
MXML文件(4 1)
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
// ClipContent Container
import components.content.contents.ClipContent;
public var content:ClipContent= new ClipContent()
public function dostuff():void
{
content.init()
content.doSearch()
}
]]>
</mx:Script>
</mx:VBox>
可以使用接口与MXML组件是这样的:
// YourClass.mxml
<mx:HBox implements="IYourInterface">
是MXML等价的
// YourClass.as
class YourClass extends HBox implements IYourInterface
但你仍然需要创建界面(在这个例子中IYourInterface)在Actionscript中。
不! MXML是用于布局和定位的声明性语言。根据定义,它需要一个实现。接口是没有实现的API的定义。
这听起来像你正在做的事情,我会怎么做。 MXML组件实现一个接口是完全可以接受的。多个组件实现相同的接口以获得不同的结果是完全可以接受的。
为了完整起见,MXML组件可以实现一个接口就像一个ActionScript组件CA:
<mx:myComp implements="com.myClass.Interface">
你是正确的,是没有办法使用MXML实现一个真正的接口(编辑:我站在纠正,你可以使用其他答案中所述的“实现”关键字。)另一种考虑的方法是使用您的4个MXML文件中的每一个的“代码隐藏”动作文件:
MXML文件(MyFancyVBox.mxml):
<?xml version="1.0" encoding="utf-8"?>
<MyFancyVBoxCode>
...
</MyFancyVBoxCode>
AS文件(MyFancyVBoxCode.as):
package com.something.whatever
{
import com.something.another.IFancyInterface;
public class MyFancyVBoxCode implements IFancyInterface
{
...
}
}
的缺点是,它双打的源文件的数量。
既然我已经阅读了Flextras答案,我不确定我是否理解或解答了您的问题。你是在谈论在MXML中声明接口还是在MXML中实现接口? – 2010-07-06 15:23:34
我也可能是错的;我以为OP在问如何在MXML中创建接口 – JeffryHouser 2010-07-06 16:36:44
我首先问的是是否有可能在MXML中声明一个接口,看起来答案是否定的。我也暗指用自定义mxml组件实现接口的最佳方法。对不起,如果我的问题有点不协调。 – dubbeat 2010-07-07 07:48:30
MXML可以实现的接口,像罗伯特·巴克说,但它不能定义的接口。
首先,我同意韦德后面的代码可以帮助你。其次,我想你是否需要在你的界面的情况下。在你的问题中,你想要“同一件事的4种不同的实现”。如何使用mxml中的“状态”。它可以解决你的问题。
为什么在这里downvote? – JeffryHouser 2013-07-09 19:40:02