2010-07-06 113 views
4

这可能是一个愚蠢的问题,所以提前道歉,如果是。 我想知道是否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> 

回答

13

可以使用接口与MXML组件是这样的:

// YourClass.mxml 
<mx:HBox implements="IYourInterface"> 

是MXML等价的

// YourClass.as 
class YourClass extends HBox implements IYourInterface 

但你仍然需要创建界面(在这个例子中IYourInterface)在Actionscript中。

0

不! MXML是用于布局和定位的声明性语言。根据定义,它需要一个实现。接口是没有实现的API的定义。

这听起来像你正在做的事情,我会怎么做。 MXML组件实现一个接口是完全可以接受的。多个组件实现相同的接口以获得不同的结果是完全可以接受的。


为了完整起见,MXML组件可以实现一个接口就像一个ActionScript组件CA:

<mx:myComp implements="com.myClass.Interface"> 
+0

为什么在这里downvote? – JeffryHouser 2013-07-09 19:40:02

0

你是正确的,是没有办法使用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 
    { 
     ... 
    } 
} 

的缺点是,它双打的源文件的数量。

+0

既然我已经阅读了Flextras答案,我不确定我是否理解或解答了您的问题。你是在谈论在MXML中声明接口还是在MXML中实现接口? – 2010-07-06 15:23:34

+0

我也可能是错的;我以为OP在问如何在MXML中创建接口 – JeffryHouser 2010-07-06 16:36:44

+0

我首先问的是是否有可能在MXML中声明一个接口,看起来答案是否定的。我也暗指用自定义mxml组件实现接口的最佳方法。对不起,如果我的问题有点不协调。 – dubbeat 2010-07-07 07:48:30

5

MXML可以实现的接口,像罗伯特·巴克说,但它不能定义的接口。

0

首先,我同意韦德后面的代码可以帮助你。其次,我想你是否需要在你的界面的情况下。在你的问题中,你想要“同一件事的4种不同的实现”。如何使用mxml中的“状态”。它可以解决你的问题。

+0

这是我的新手理解,国家是非常适合不同的用户界面的权利?我的4个实现与数据检索和解析有关。他们喜欢内容提供者。 州仍然是一个可行的候选人? – dubbeat 2010-07-07 07:38:25

+0

是的,你是对的,各州不是你的案件的好候选人。但是,我不会将数据检索和解析放在mxml文件中,因为mxml对于视觉设计非常有用。我会把这些东西放在课堂上,让它独立于mxml。 – michael 2010-07-07 16:05:10

相关问题