当前位置:  开发笔记 > 编程语言 > 正文

我为什么要使用MXML?

如何解决《我为什么要使用MXML?》经验,为你挑选了1个好方法。

如果一切都可以在MXML中完成可以也可以在ActionScript中完成,并且在ActionScript(循环,条件等)中更容易实现许多事情,为什么要花时间学习MXML?

我在这一点上的最佳理由是MXML的结构很好地匹配UI组件的可视层次结构,并且初始化UI的代码行减少了.另一方面,真实世界的UI通常是动态的,实现为一个简单的静态结构,然后根据运行时条件动态填充(在这种情况下,UI更新仍在ActionScript中).通过创建一些辅助方法,还可以减少ActionScript所需的SLOC.



1> Matt Guest..:

这取决于您的应用程序的需求,但我通常将我的设计分解为可视化块并使用自定义MXML组件来使用基于mxml的自定义组件来布局应用程序的主要区域和组件(数据面板,对话框等).然后我将使用自定义动作脚本组件来增强它,我需要比内置布局组件提供更多的视觉灵活性.MXML非常方便,因为它可以非常轻松地在舞台上获取组件并设置各种属性和样式设置.

以两个相同登录面板为例:

在MXML中:


    
    
    
    
    

在动作中:

package
{
    import flash.events.MouseEvent;

    import mx.containers.Panel;
    import mx.controls.Button;
    import mx.controls.Label;
    import mx.controls.TextInput;

    public class MyLoginPanel extends Panel
    {

        private var _unLabel:Label;
        private var _passLabel:Label;
        private var _txtUsername:TextInput;
        private var _txtPassword:TextInput;
        private var _btnLogin:Button;

        public function MyLoginPanel()
        {
        }

        override protected function createChildren():void
        {
            super.createChildren();

            this.width = 290;
            this.height = 148;
            this.title = "Login";
            this.layout = "absolute";

            _unLabel = new Label();
            _unLabel.text = "User Name:";
            _unLabel.width = 80;
            _unLabel.setStyle("textAlign", "right");
            _unLabel.move(8, 8);
            this.addChild(_unLabel);

            _passLabel = new Label();
            _passLabel.text = "Password:";
            _passLabel.width = 80;
            _passLabel.setStyle("textAlign", "right");
            _passLabel.move(8, 38);
            this.addChild(_passLabel);

            _txtUsername = new TextInput();
            _txtUsername.move(90, 8);
            this.addChild(_txtUsername);

            _txtPassword = new TextInput();
            _txtPassword.move(90, 38);
            _txtPassword.displayAsPassword = true;
            this.addChild(_txtPassword);

            _btnLogin = new Button();
            _btnLogin.label = "Login";
            _btnLogin.move(185, 68);
            _btnLogin.addEventListener(MouseEvent.CLICK, doLogin);
            this.addChild(_btnLogin);
        }       
    }
}

七行代码与62.这是一个非常简单的示例,但希望您可以通过在MXML中布置应用程序的许多部分来了解如何获益,无论您是否在Flex Builder中使用设计模式.

但我建议的一件事就是尽可能地将动作脚本从mxml文件中保留下来.将MXML视为您的视图,并将任何繁重的功能分离到其他类中.然后,您可以在MXML组件中的控件可以绑定到的类中提供公共属性.MXML是一种布局语言,根据我的经验,它最终会在有意义的地方使用它并在需要更重的提升时放入动作脚本.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有