微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flex:如何使代码远离MXML

您能否推荐有关设计Flex应用程序的文章,书籍和最佳实践? (AIR和Web).

我读过Creating components and enforcing separation of concerns with FlexBuilding components by using code behind.

应用程序是否始终必须从主MXML开始?我不能从ActionScript类中实例化第一个视图吗?

如何为第一个MXML添加处理程序并为其提供流控制?

我正在尝试在我的MXML文件上编写零代码,以使视图与代码分离.这在Flex中是否可行?

解决方法

我参与了一些使用代码隐藏模式的项目,这些模式满足了您的许多要求.简而言之,您通过创建ActionScript基类(MyClassCode.as),然后创建一个继承自您的代码隐藏类(MyClass.mxml)的MXML文件,将代码与MXML隔离开来.一个缺点是MXML文件中的任何UI元素都需要在代码隐藏类中第二次声明,否则我发现这是一种将代码与UI分离的非常有效的方法.这是一个示例和一些链接获取更多信息:

MyClassCode.as:

package mypackage
{
    import flash.events.MouseEvent;

    import mx.events.FlexEvent;

    import spark.components.Button;
    import spark.components.Group;

    public class MyClassCode extends Group
    {
        public var myButton:Button;

        public function MyClassCode()
        {
            super();
            this.addEventListener(FlexEvent.CREATION_COMPLETE,onCreationComplete);
        }

        private function onCreationComplete(e:FlexEvent):void {
            this.removeEventListener(FlexEvent.CREATION_COMPLETE,onCreationComplete);
            myButton.addEventListener(MouseEvent.CLICK,onClick);
        }

        private function onClick(e:MouseEvent):void {
            // Do something
        }
    }
}

MyClass.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mypackage:MyClassCode xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx" 
                       xmlns:mypackage="mypackage.*">
    <s:Button id="myButton"/>
</mypackage:MyClassCode>

一些链接

http://learn.adobe.com/wiki/display/Flex/Code+Behind

http://ted.onflash.org/2007/02/code-behind-in-flex-2.php

http://blog.vivisectingmedia.com/2008/04/the-flex-code-behind-pattern/

原文地址:https://www.jb51.cc/flex/174176.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐