gpt4 book ai didi

apache-flex - 分离 MXML 和 Actionscript

转载 作者:行者123 更新时间:2023-12-03 09:39:26 26 4
gpt4 key购买 nike

从本教程 http://www.brighthub.com/internet/web-development/articles/11010.aspx
我找到了下面的代码。有没有办法解决这个问题,所以 mxml 文件只有 mxml,脚本标签之间的代码放在 actionscript 文件中?

谢谢。

-缺口

<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>

最佳答案

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

  • 将 AS 代码放入 .as 文件并使用“source=yourfile.as”attribute in the Script tag :
  • <mx:Script source="yourfile.as" />
    您也可以使用 includes="yourfile.as"带有脚本标签的声明:
    <mx:Script
    <![CDATA[
    include "yourfile.as";

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

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

  • 作为文件:
    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>

  • 使用框架将您正在寻找的功能注入(inject)为一种“模型”,其中包含您将使用的数据功能。在 Parsley 中看起来像这样:
        <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>

  • 想到的两个可以帮助注入(inject)的框架是 MateParsley .

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

    主要.mxml:
    <mx:Application blah,blah,blah>
    <component:YourComponent />
    </mx:Application>

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

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

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

    希望这是有道理的:)

    关于apache-flex - 分离 MXML 和 Actionscript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4632490/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com