2011-01-08 55 views
10

來自本教程http://www.brighthub.com/internet/web-development/articles/11010.aspx 我找到了下面的代碼。有沒有辦法解決這個問題,所以mxml文件只有mxml,腳本標記之間的代碼放在一個actionscript文件中?分離MXML和Actionscript

謝謝。

-Nick

<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" 
    width="600" 
    height="400" 
    frameRate="100" 
    creationComplete="CreationComplete()" 
    enterFrame="EnterFrame(event)"> 
    <mx:Script><![CDATA[ 
     public function CreationComplete():void 
     { 

     } 

     public function EnterFrame(event:Event):void 
     { 

     } 
    ]]></mx:Script> 
</mx:Application> 

回答

12

有Flex中實現這一目標的幾種方法:

<mx:Script source="yourfile.as" />

你可以還可以使用includes="yourfile.as"聲明瓦特/腳本標籤:

<mx:Script 
    <![CDATA[ 
     include "yourfile.as"; 

     //Other functions 
    ]]> 
</mx:Script> 

  • 使用Code-Behind模式,你在定義代碼爲延伸你希望你的MXML文件來擴展可視化組件文件。然後你的MXML文件簡單地擴展了AS文件,你可以(通過繼承)訪問所有的代碼。它看起來是這樣的(我不知道這是否會爲延伸Application主MXML文件工作):

AS文件:

package { 
    public class MainAppClass { 
     //Your imports here 
     public function CreationComplete():void { 
     } 
     public function EnterFrame(event:Event):void { 
     } 
    } 
} 

MXML文件:

<component:MainAppClass xmlns:component="your namespace here" 
         xmlns:mx="http://www.adobe.com/2006/mxml" 
         layout="absolute" 
         width="600" 
         height="400" 
         frameRate="100" 
         creationComplete="CreationComplete()" 
         enterFrame="EnterFrame(event)"> 
</component:MainAppClass> 

  • 使用框架來注入您正在尋找的功能作爲一種包含您將使用的數據功能的「模型」。它看起來東西像這樣的香菜:其中浮現在腦海中,它可以幫助瓦特/注射

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
          layout="absolute" 
          width="600" 
          height="400" 
          frameRate="100" 
          creationComplete="model.CreationComplete()" 
          enterFrame="model.EnterFrame(event)"> 
    
          <mx:Script> 
           <![CDATA[ 
            [Inject] 
            [Bindable] 
            public var model:YourModelClass; 
           ]]> 
          </mx:Script> 
        </mx:Application> 
    

兩個框架是MateParsley


我不知道如果代碼隱藏模式與主MXML文件(它擴展應用)的作品,所以,如果您有任何問題,你可以嘗試在你的主MXML文件打破了內容到Main中包含的獨立組件中。它可能是這個樣子:

Main.mxml:

<mx:Application blah,blah,blah> 
    <component:YourComponent /> 
</mx:Application> 

YourComponent.mxml:

<component:YourComponentCodeBehind creationComplete="model.creationComplete()"...> 
    //Whatever MXML content you would have put in the Main file, put in here 
</component:YourComponentCodeBehind> 

YourComponentCodeBehind。作爲

package { 
    class YourComponentCodeBehind { 
     //Whatever AS content you would have put in the Main .as file, put in here 
    } 
} 

從我已經能夠從Flex的架構來收集,這是建立應用程序的一種很常見的方式:主MXML包括一個單一的「視圖」,這是入口點到其餘的應用程序。該視圖包含構成應用程序的所有其他視圖。

希望是有道理的:)

+0

我想用模型背後的代碼去。我嘗試構建AS文件,並構建它。但是在運行時,我得到了錯誤「TypeError:Error#2023:Class MainAppClass $必須從Sprite繼承以鏈接到根。」嘗試構建mxml文件時,出現錯誤C:\ as \ MainAppClass.mxml(8):錯誤:無法將解析爲組件實現。 enterFrame =「EnterFrame(event)」> 我錯過了什麼來構建它? – Nikhil 2011-01-08 23:15:31

相關問題