Flex 记录点滴(二)关于MXML

Flex 记录点滴(二)关于MXML

 

参考文档《Developing Flex Applications

 

上一篇纪录中记载了一些Flex的背景内容今天要记录MXML

 

Flex使用两种语言来写应用程序:MXMLActionScript(关于ActionScript将在下一篇纪录中纪录),Flex离不开MXML,就像我们离不开空气一样。MXML是这样一种xml标记语言,Flex用它来布置UI组件,同时也可以声明一些非可视化的东西,譬如:在UI组件和服务器端之间的数据库连接以及数据梆定等等。

   就像HTML一样,MXML提供一套标签(tags)来定义UI。如果你对HTML非常熟悉的话,那么MXML对你来说将很容易就会上手。MXML相比HTML来说有更强的结构性,而且它提供了更多的标签库,譬如:MXML提供了诸如data gridstreesnavigatorsaccordings menus等等HTML不曾提供的可视化组件以及连接web服务、数据绑定以及animation effects等等非可视化组件,而且你可以扩展MXML来自定义MXML标签。

   当然HTMLMXML最大的不同是基于MXML的应用系统可以编译为SWF格式的文件并运行在Flash Player中,提供更加丰富和动态的UI

 

1.  1  进入“Hello,World!

因为MXML就是一个普通的xml文件,所以你可以用简单的文本编辑器来开发,或者比较好的xml编辑器开发,当然首选的还是整合了开发环境的IDE,譬如:刚刚公布的Flex Builder(只有60天的试用版,呵呵,有心的可以找到相应的注册码)。

我选择用Flex Builder开发,当然对于初学者来说还是选用一些简单的编辑器最好,那样可以以更加自然的方式接触MXML

下面给出一个简单的例子:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

<mx:Panel title="你好,世界!" marginTop="10" marginBottom="10" marginLeft="10" marginRight="10" fontSize="12">

    <mx:Label text="你好,世界!" color="red" fontSize="24"/>

</mx:Panel>

</mx:Application>

上边的例子在IE中运行的时候可以看到如下画面:

说明Flex根标签是<mx:Application>它是一个容器container,容器是这样一种标签在它之中可以任何除了<ma:Application>以外的任何组件。关于容器的记录将在以后给出。

 

2.  2  布置UI

MXML提供了广泛的可视化组件来制作UI,这些组件从大的分类来说有两类

l         l         containers:如Panel / Box(Vbox/Hbox) / Canvas / Grid / Form 等等

l         l         control:如:Button / CheckBox / DateField / TextArea 等等

上边所有的组件在以后的记录中都会有记录。

下面也给一个简单的例子。

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

       <mx:Panel title="MXML布置UI组件" marginTop="10" marginBottom="10"

              marginLeft="10" marginRight="10" fontSize="12" >

              <mx:HBox>

                     <!-- List with three items -->

                     <mx:List>

                            <mx:dataProvider>

                                   <mx:Array>

                                          <mx:String>操作菜单一</mx:String>

                                          <mx:String>操作菜单二</mx:String>

                                          <mx:String>操作菜单三</mx:String>

                                   </mx:Array>

                            </mx:dataProvider>

                     </mx:List>

 

                     <!-- First pane of TabNavigator -->

                     <mx:TabNavigator borderStyle="solid">

                            <mx:VBox label="Pane1" width="300" height="150" >

                                   <mx:TextArea text="为奥运健儿喝彩!" width="199" />

                                   <mx:Button label="提交" />

                            </mx:VBox>

 

                            <!-- Second pane of TabNavigator -->

                            <mx:VBox label="Pane2" width="300" height="150" >

                            <!-- Stock view goes here -->

                            </mx:VBox>

 

                     </mx:TabNavigator>

 

              </mx:HBox>

 

       </mx:Panel>

</mx:Application>

上边的例子在IE中运行的时候可以看到如下画面:

说明上面的例子用到组件有Panel / Hbox / List  / TabNavigator 等等

 

3.  3  MXML触发事件

Flex应用程序是基于事件驱动的每一个组件都有不同的许多事件和其对应譬如<mx:Button>click事件等等。

给出一个例子:

<?xml version="1.0"?>

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

 

       <mx:Panel title="你好,世界!" marginTop="10" marginBottom="10"

              marginLeft="10" marginRight="10" fontSize="12" >

 

              <mx:TextArea id="textarea1"/>

              <mx:Button label="提交" click="textarea1.text='为奥运健儿喝彩!';"/>

 

       </mx:Panel>

</mx:Application>s

上边的例子在IE中运行的时候可以看到如下画面:

 

说明:左图为初始画面,右图为点击提交按纽以后的结果。

 

下面将上边的例子增加一点复杂度MXML中添加actionscript方法

<?xml version="1.0"?>

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

       <mx:Script>

              <![CDATA[

                     function hello(){

                            textarea1.text="为奥运健儿喝彩!";

                     }

              ]]>

       </mx:Script>

 

       <mx:Panel title="你好,世界!" marginTop="10" marginBottom="10"

              marginLeft="10" marginRight="10" fontSize="12" >

 

              <mx:TextArea id="textarea1"/>

              <mx:Button label="提交" click="hello();"/>

 

       </mx:Panel>

</mx:Application>

运行的结果相同。

 

4.  4  在不同组件之间绑定数据

Flex提供简单的语法来绑定不同组件之间的属性,例如在下面的例子中“{}”的应用:

 

上边的例子在IE中运行的时候可以看到如下画面:

 

运行前                           点击提交按纽后

{}”有一个替代方案,就是使用<mx:Binding>标签,这在以后记录。

 

5.  5  使用数据服务

MXML提供如下几种数据服务组件:

l         l         WebService provides access to SOAP-based web services

l         l         HTTPService provides access to HTTP URLs that return data

l         l         RemoteObject provides access to Java objects

6.  6  存储和验证数据


7.  7  格式化数据


8.  8  使用css


9.  9  使用效果


10.   10   使用xml命名空间(Using XML namespaces

MXML标签属性“xmlns”指定xml的命名空间。Xml命名空间可以让你在同一个xml文档里使用不同套的xml标签。在xml中标签和命名空间息息相关。

Xml的命名空间给了你使用自定义标签的能力,在下面的例子中包含一个自定义标签:“CustomBox”。

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns:my="containers.boxes.*">
         <mx:Panel title="My Application" marginTop="10" marginBottom="10"
                 marginLeft="10" marginRight="10" >
 
                 <my:CustomBox/>
 
         </mx:Panel>
</mx:Application>

 

 

  

Jplateau 2004911日星期六 写于广州同德。

 

内容概要:本文提出了一种基于非合作博弈理论的居民负荷分层调度模型,并结合双层鲸鱼优化算法(Two-level Whale Optimization Algorithm)进行高效求解,模型与算法均通过Matlab代码实现。研究针对电力系统中居民侧用电负荷的复杂调度问题,引入非合作博弈机制刻画各用户之间的利益竞争关系,实现负荷的分层优化分配;同时设计双层优化架构,上层优化资源配置,下层模拟用户自主决策行为,提升了模型的实用性与合理性。通过智能优化算法求解多层级、非凸非线性的博弈模型,有效提高了调度方案的收敛性与全局寻优能力,适用于现代智能电网中的需求侧管理与能源优化场景。; 适合人群:具备电力系统基础理论知识和Matlab编程能力,从事智能电网、能源优化调度、需求侧管理、博弈论应用等方向的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于居民区电力负荷的分层优化调度系统设计与仿真分析;②为非合作博弈在多主体能源系统建模中的应用提供方法论支持;③利用双层鲸鱼算法解决具有嵌套结构的复杂双层优化问题,提升求解效率与调度方案的可行性。; 阅读建议:建议读者结合提供的Matlab代码深入理解模型构建逻辑与算法实现流程,重点关注博弈模型的效用函数设计、纳什均衡求解思路以及双层优化结构的迭代机制,宜配合实际用电数据开展复现实验以验证模型有效性与鲁棒性。
内容概要:本文围绕基于自适应神经模糊推理系统(ANFIS)智能控制器的可再生能源微电网功率管理系统展开研究,结合Simulink仿真实现,深入探讨了微电网中功率的智能调控与经济机组组合调度问题。通过引入ANFIS控制器,有效应对风能、光伏等可再生能源出力的波动性与不确定性,提升系统运行的稳定性与电能质量。研究内容涵盖微电网多源协调控制策略、功率平衡管理、优化调度模型构建及仿真验证,实现了对分布式电源、储能系统和负荷的协同优化,兼顾经济性与可靠性目标,并通过仿真平台验证了所提方法的有效性与优越性。; 适合人群:具备电力系统、自动化或新能源相关专业背景,熟悉Matlab/Simulink仿真环境,从事微电网能量管理、智能控制、能源优化等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高比例可再生能源接入场景下的微电网能量管理系统研发与教学实践;②为实现微电网功率稳定控制与经济高效运行提供先进的智能控制解决方案;③支撑高水平学术论文复现、科研课题攻关及实际工程项目的仿真验证与方案优化。; 阅读建议:建议结合提供的Simulink模型与相关代码进行动手实践,重点关注ANFIS控制器的设计流程、规则库构建与参数调优方法,并通过与传统PID或MPC控制策略的对比实验,深入理解其在动态响应与鲁棒性方面的优势。同时可进一步拓展文中提出的优化调度逻辑,应用于多目标、多约束的复杂实际应用场景中。
内容概要:本文档聚焦于“直流电机双闭环控制Matlab仿真”,系统阐述了基于Matlab/Simulink平台实现直流电机双闭环控制系统(主要包括速度环与电流环)的设计与仿真全过程。通过构建直流电机的数学模型,结合PI控制器进行调控,实现对电机转速和电枢电流的高精度动态控制,验证控制策略的稳定性与响应性能。文档详细介绍了仿真模型的搭建流程、关键参数的整定方法、系统动态波形的分析手段以及仿真结果的有效性验证,体现了经典自动控制理论在实际电机系统中的工程应用,是电机控制与电力电子技术相结合的典型研究案例。; 适合人群:具备自动控制原理、电机与拖动基础、电力电子技术和Matlab/Simulink仿真能力的电气工程、自动化、机电一体化等专业的本科生、研究生及从事电机驱动系统研发的工程技术人员。; 使用场景及目标:①作为高校课程设计或实验教学材料,帮助学生深入理解双闭环调速系统的工作机理与工程实现;②服务于科研项目,为新型电机控制算法(如滑模、模糊PID等)的开发与性能对比提供基础仿真验证平台;③作为工业界产品前期设计的仿真工具,用于评估不同控制策略在动态响应、抗干扰能力和稳态精度方面的可行性。; 阅读建议:建议读者在学习过程中紧密结合自动控制理论知识,亲手在Simulink环境中搭建完整的双闭环仿真模型,通过反复调整PI控制器的比例与积分参数,观察并分析转速、电流的阶跃响应曲线,从而深刻理解反馈控制的本质、系统稳定性条件以及参数整定对动态性能的影响,进而掌握电机控制系统的设计精髓。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值