首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分离MXML和Actionscript

分离MXML和Actionscript
EN

Stack Overflow用户
提问于 2011-01-08 13:16:47
回答 1查看 5.7K关注 0票数 10

在本教程http://www.brighthub.com/internet/web-development/articles/11010.aspx中,我找到了下面的代码。有没有办法打破这一点,使mxml文件只有mxml,而脚本标记之间的代码放在一个actionscript文件中?

谢谢。

-Nick

代码语言:javascript
运行
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-08 14:24:58

在Flex中有几种方法可以实现这一点:

  • 将AS代码放在.as文件中,并使用"source=yourfile.as“use

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

您还可以在脚本标记中使用includes="yourfile.as"声明w/:

代码语言:javascript
运行
复制
<mx:Script
    <![CDATA[
        include "yourfile.as";

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

  • 使用Code-Behind模式,在AS文件中定义代码,该文件扩展您希望MXML文件扩展的可视组件。然后,您的MXML文件简单地扩展了AS文件,您就可以(通过继承)访问所有代码。它看起来像这样(我不确定这是否适用于扩展Application):

的主MXML文件

作为文件:

代码语言:javascript
运行
复制
package {
    public class MainAppClass {
        //Your imports here
        public function CreationComplete():void {
        }
        public function EnterFrame(event:Event):void {
        }
    }
}

MXML文件:

代码语言:javascript
运行
复制
<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>

  • 使用一个框架将您正在寻找的功能作为一种“模型”类型注入,其中包含您将使用的数据功能。在欧芹菜中,它看起来像这样:

http://www.adobe.com/2006/mxml“layout="absolute”width="600“height="400”frameRate="100“creationComplete="model.CreationComplete()”enterFrame="model.EnterFrame(event)">脚本 >

脑海中浮现出两个框架,它们可以帮助使用注入,它们是MateParsley

我不确定代码隐藏模式是否适用于主MXML文件(它扩展了Application),因此如果您遇到问题,可以尝试将主MXML文件中的内容分解为一个单独的组件,该组件包含在Main中。它可能看起来像这样:

Main.mxml:

代码语言:javascript
运行
复制
<mx:Application blah,blah,blah>
    <component:YourComponent />
</mx:Application>

YourComponent.mxml:

代码语言:javascript
运行
复制
<component:YourComponentCodeBehind creationComplete="model.creationComplete()"...>
  //Whatever MXML content you would have put in the Main file, put in here
</component:YourComponentCodeBehind>

YourComponentCodeBehind.as

代码语言:javascript
运行
复制
package {
    class YourComponentCodeBehind {
        //Whatever AS content you would have put in the Main .as file, put in here
    }
}

根据我从Flex架构收集到的信息,这是设置应用程序的一种非常常见的方法:您的主MXML包含一个“视图”,它是应用程序其余部分的入口点。此视图包含组成应用程序的所有其他视图。

希望这是有意义的:)

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4632490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档