2010-07-06 115 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

相關問題