﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-zhangsenwei-随笔分类-Flex</title><link>http://www.blogjava.net/zhangsenwei/category/41440.html</link><description>张森炜的博客</description><language>zh-cn</language><lastBuildDate>Sat, 29 Aug 2009 12:23:21 GMT</lastBuildDate><pubDate>Sat, 29 Aug 2009 12:23:21 GMT</pubDate><ttl>60</ttl><item><title>《Flex第一步》第二章PDF下载</title><link>http://www.blogjava.net/zhangsenwei/archive/2009/08/29/293072.html</link><dc:creator>张森炜</dc:creator><author>张森炜</author><pubDate>Sat, 29 Aug 2009 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/zhangsenwei/archive/2009/08/29/293072.html</guid><wfw:comment>http://www.blogjava.net/zhangsenwei/comments/293072.html</wfw:comment><comments>http://www.blogjava.net/zhangsenwei/archive/2009/08/29/293072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangsenwei/comments/commentRss/293072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangsenwei/services/trackbacks/293072.html</trackback:ping><description><![CDATA[最近在网上收集Flex的学习资料，感觉《Flex第一步》对于入门者来说这本书挺好的，但只有部分章节在网上有电子版了，先将搜到的共享一下<br />
<a href="/Files/zhangsenwei/Char2.rar">《Flex第一步》第二章下载</a>
<img src ="http://www.blogjava.net/zhangsenwei/aggbug/293072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangsenwei/" target="_blank">张森炜</a> 2009-08-29 10:30 <a href="http://www.blogjava.net/zhangsenwei/archive/2009/08/29/293072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Flex第一步》第三章3.2 使用组件</title><link>http://www.blogjava.net/zhangsenwei/archive/2009/08/29/293068.html</link><dc:creator>张森炜</dc:creator><author>张森炜</author><pubDate>Sat, 29 Aug 2009 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/zhangsenwei/archive/2009/08/29/293068.html</guid><wfw:comment>http://www.blogjava.net/zhangsenwei/comments/293068.html</wfw:comment><comments>http://www.blogjava.net/zhangsenwei/archive/2009/08/29/293068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangsenwei/comments/commentRss/293068.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangsenwei/services/trackbacks/293068.html</trackback:ping><description><![CDATA[<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'">3.2&nbsp;<font face="宋体">使用组件</font></span><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在&nbsp;<font face="Times New Roman">MXML&nbsp;</font><font face="宋体">中，除了&nbsp;</font><font face="Times New Roman">Application</font><font face="宋体">标签外，还提供了大量的标签供我们使用。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">例如上面代码中出现的<font face="Times New Roman">Button</font><font face="宋体">和</font><font face="Times New Roman">Label</font><font face="宋体">标签，处理界面结构的</font><font face="Times New Roman">Canvas</font><font face="宋体">、</font><font face="Times New Roman">Box</font><font face="宋体">标签，网页中常见的下拉框、多选框、单选框、复选框，用来显示数据的</font><font face="Times New Roman">DataGrid</font><font face="宋体">、</font><font face="Times New Roman">Tree</font><font face="宋体">等等。每个标签都对应一个类文件。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'">3.2.1&nbsp;<font face="宋体">插入组件</font></span><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在<font face="Times New Roman">MXML</font><font face="宋体">中组件使用起来非常简单，比如插入一个按钮，编写代码：</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&lt;mx:Button&gt;&lt;/mx:Button&gt;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">这一对闭合的标签将在界面上绘制出一个<font face="Times New Roman">Button</font><font face="宋体">组件。在</font><font face="Times New Roman">XML</font><font face="宋体">中，所有标签必须闭合。和正常标签相比，闭合标签只是在前面添加了一个&#8220;</font><font face="Times New Roman">/</font><font face="宋体">&#8221;。也是用另一种形式：</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&lt;mx:Button&nbsp;/&gt;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&#8220;<font face="Times New Roman">/</font><font face="宋体">&#8221;符号是闭合标签的简写形式，通常用于单行的节点，描述一个单独的元素。如果标签包含子节点，则不能采用简写。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">MXML<font face="宋体">中，组件的属性（如长、宽、位置等）是作为节点的属性出现的，比如：</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&lt;mx:Button&nbsp;width="200"&nbsp;hieight="200"&gt;&lt;/mx:Button&gt;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">组件按照功能大致可分为三类：</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="text-align: justify; margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">布局类，包括所有的容器类型组件，比如&nbsp;<font face="Times New Roman">HBox</font><font face="宋体">、</font><font face="Times New Roman">Panel</font><font face="宋体">等。</font><font face="Times New Roman">Spacer</font><font face="宋体">、</font><font face="Times New Roman">HRule&nbsp;</font><font face="宋体">和&nbsp;</font><font face="Times New Roman">VRule</font><font face="宋体">不是容器类型，但主要用于布局，因此也归于此类。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="text-align: justify; margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">导航类，包括菜单条、按钮条等各种导航功能的组件。</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="text-align: justify; margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">交互类，包括内容展示、数据交互相关组件，如按钮、下拉框、图片、视频等等。</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="text-align: justify; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Flex&nbsp;Builder<font face="宋体">的组件面板中列出了所有的可视化组件。在设计模式试图下，可以直接从组件面板将组件拖入到编辑区，同时自动生成程序代码。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="text-align: justify; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">如果要使用非可视化组件，则需要输入代码。在代码试图中输入<font face="Times New Roman">&lt;mx:&nbsp;</font><font face="宋体">这时候跟进的代码提示窗口将列出</font><font face="Times New Roman">mx&nbsp;</font><font face="宋体">空间下所有的对象，如图&nbsp;</font><font face="Times New Roman">3.1&nbsp;</font><font face="宋体">所示。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/zhangsenwei/Flex/3.1.jpg" width="402" height="288" /><br />
</p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'">3.2.2<font face="宋体">自定义</font><font face="Times New Roman">MXML</font><font face="宋体">组件</font></span><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在实际开发中，尤其是一个大型应用中，我们不会把所有的代码都塞进一个文件中。可以想象，修改一个几千行的文件是件痛苦的事。因此，对程序进行功能分割是非常必要的。这带来的好处很多，明显的一点是让开发者能够分工合作，提高程序的重用性，降低了维护的难度。</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">基于组建的开发模式是<font face="Times New Roman">Flex</font><font face="宋体">的一个特色。一个</font><font face="Times New Roman">Flex</font><font face="宋体">程序是由若干个组件构成的。程序中所有的</font><font face="Times New Roman">MXML</font><font face="宋体">文件和</font><font face="Times New Roman">ActionScript</font><font face="宋体">类文件，都被当作用户自定义的组件。用户自定义的组件和</font><font face="Times New Roman">Flex</font><font face="宋体">本身的组件在用法上完全一样，它们的区别在于：</font><font face="Times New Roman">Flex</font><font face="宋体">组件经过封装，可以被任意程序使用，而用户组件在特定的程序中才可以使用。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">一般我们将程序中功能能够独立或者需要返复使用的部分定义成一个用户组件。编写程序时，应当尽量减少组件与组件之间的直接联系，降低块与块之间的依赖性。</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在程序<font face="Times New Roman">Example_1</font><font face="宋体">中，我们来新建一个</font><font face="Times New Roman">MXML</font><font face="宋体">组件。在导航区，在空白区域单击鼠标右键，在弹出的菜单中选择&nbsp;</font><font face="Times New Roman">New&nbsp;----&gt;&nbsp;MXML&nbsp;Component</font><font face="宋体">，见图</font><font face="Times New Roman">3.2</font><font face="宋体">。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><!--endfragment--><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/zhangsenwei/Flex/3.2.jpg" width="530" height="288" /></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">然后会弹出如图&nbsp;<font face="Times New Roman">3.3&nbsp;</font><font face="宋体">所示的对话框。</font></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><!--endfragment--><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/zhangsenwei/Flex/3.3.jpg" width="526" height="566" /><br />
</p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">这里要给出被创建组件的文件名，并选择是扩展来自哪一种组件，包括所有可视化组件和用户已经自定义的组件，也就是说可以在已经扩展的基础上就继续扩展。</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">选择<font face="Times New Roman">Image</font><font face="宋体">对象，单击</font><font face="Times New Roman">Finish</font><font face="宋体">按钮，一个新的</font><font face="Times New Roman">MXML</font><font face="宋体">文件被创建了，切换到设计视图，点击</font><font face="Times New Roman">Image</font><font face="宋体">组件，在属性面板会看到他的常见属性，见图</font><font face="Times New Roman">3.4</font><font face="宋体">。其中</font><font face="Times New Roman">Source</font><font face="宋体">属性即图片的路径。选择好图片后，这个组建就完成了，见图</font><font face="Times New Roman">3.5</font><font face="宋体">。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><!--endfragment--><br />
<!--endfragment--><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/zhangsenwei/Flex/3.4.jpg" width="360" height="231" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/zhangsenwei/Flex/3.5.jpg" width="171" height="165" /><br />
<!--endfragment--></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">myImage.mxml<font face="宋体">的文件内容如下：</font></span></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Image&nbsp;&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;source</span><span style="color: #0000ff">="pic/animal.png"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Image</span><span style="color: #0000ff">&gt;</span></div>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp; 再次切换到设计模式视图。这时，在组件面板上，<font face="Times New Roman">Custom</font><font face="宋体">分类中出现了新添加的组件名。想使用</font><font face="Times New Roman">Flex</font><font face="宋体">自带的组件一样，将</font><font face="Times New Roman">myImage</font><font face="宋体">组件从组件面板拖放到主程序中，图片显示正常。切换到代码模式视图，</font><font face="Times New Roman">Example_1.mxml</font><font face="宋体">文件的内容变化了：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Application&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #ff0000">&nbsp;xmlns:ns1</span><span style="color: #0000ff">="*"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1:myImage&nbsp;</span><span style="color: #ff0000">x</span><span style="color: #0000ff">="30"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="30"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Application</span><span style="color: #0000ff">&gt;</span></div>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"></font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp; 请注意，在<font face="Times New Roman">Application</font><font face="宋体">标签中，多了一个属性：</font><font face="Times New Roman">xmlns:nsl="*"</font><font face="宋体">，这便是本章</font><font face="Times New Roman">3.1.2</font><font face="宋体">节中讲到的自定义命名空间。这里边机器自动添加了名为&#8220;</font><font face="Times New Roman">nsl</font><font face="宋体">&#8221;的命名空间，将程序目录下所有的</font><font face="Times New Roman">MXML</font><font face="宋体">组件都纳入其中。因此，插入的</font><font face="Times New Roman">myImage</font><font face="宋体">组件的代码相应变为：</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&lt;nsl:myImage&nbsp;x="30"&nbsp;y="30"&nbsp;/&gt;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp; 在实际开发中，为了更好地规划程序的结构，我们一般根据功能来划分命名空间。新建文件夹&#8220;<font face="Times New Roman">view</font><font face="宋体">&#8221;，将</font><font face="Times New Roman">myImage</font><font face="宋体">放在其中。&#8220;</font><font face="Times New Roman">view</font><font face="宋体">&#8221;有视图、视界的意思，我们把所有和界面相关的组件都放在这里面，这样看文件夹的名字就知道里面的大致内容了。修改后，</font><font face="Times New Roman">Exaple_1.mxml</font><font face="宋体">文件的代码如下：</font></span><!--endfragment--></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Application&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #ff0000">&nbsp;xmlns:view</span><span style="color: #0000ff">="wiew.*"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">view:myImage&nbsp;</span><span style="color: #ff0000">x</span><span style="color: #0000ff">="30"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="30"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Application</span><span style="color: #0000ff">&gt;</span></div>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">运行程序，效果如图<font face="Times New Roman">3.6</font><font face="宋体">所示：</font></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><!--endfragment--><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/zhangsenwei/Flex/3.6.jpg" width="275" height="233" /><br />
<br />
<span style="color: red"><strong>说明：由于在网上相关资源太少所以本文是按照《Flex第一步》编写，由于时间比较短所以第三章内容没有全部出来同时编写过程中有错别字，请大家担待。^_^</strong></span><br />
<br />
</p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><!--endfragment--><!--endfragment--></p>
<img src ="http://www.blogjava.net/zhangsenwei/aggbug/293068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangsenwei/" target="_blank">张森炜</a> 2009-08-29 10:19 <a href="http://www.blogjava.net/zhangsenwei/archive/2009/08/29/293068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Flex第一步》第三章3.1MXML语法</title><link>http://www.blogjava.net/zhangsenwei/archive/2009/08/28/292998.html</link><dc:creator>张森炜</dc:creator><author>张森炜</author><pubDate>Fri, 28 Aug 2009 09:35:00 GMT</pubDate><guid>http://www.blogjava.net/zhangsenwei/archive/2009/08/28/292998.html</guid><wfw:comment>http://www.blogjava.net/zhangsenwei/comments/292998.html</wfw:comment><comments>http://www.blogjava.net/zhangsenwei/archive/2009/08/28/292998.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangsenwei/comments/commentRss/292998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangsenwei/services/trackbacks/292998.html</trackback:ping><description><![CDATA[<strong><font style="color: #000000" color="#ff0000" face="宋体"><span style="font-family: 宋体">
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'">3.1&nbsp;&nbsp;MXML<font face="宋体">语法</font></span><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">通常情况下，<font face="Times New Roman">Flex</font><font face="宋体">程序由以下三种文件组成：</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">以&nbsp;<font face="Times New Roman">mxml</font><font face="宋体">为后缀的程序文件</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">以&nbsp;<font face="Times New Roman">as&nbsp;</font><font face="宋体">为后缀的&nbsp;</font><font face="Times New Roman">ActionScript&nbsp;</font><font face="宋体">文件</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">以<font face="Times New Roman">css&nbsp;</font><font face="宋体">为后缀的样式表文件</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">MXML<font face="宋体">文件就好比大脑，</font><font face="Times New Roman">as</font><font face="宋体">文件和</font><font face="Times New Roman">css</font><font face="宋体">文件是他的手和脚，主程序</font><font face="Times New Roman">MXML</font><font face="宋体">文件将项目中的所有文件组合在一起，形成一个有机的整体。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">本章简要说明<font face="Times New Roman">MXML</font><font face="宋体">的语法，并结合实力分析</font><font face="Times New Roman">MXML</font><font face="宋体">文件的内容结构。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在上一章的实例中，创建了一个简单的<font face="Times New Roman">Flex</font><font face="宋体">程序，主程序文件是一个&#8220;</font><font face="Times New Roman">mxml</font><font face="宋体">&#8221;为后缀名的文件，这个文件所采用的便是我们这里要讲的</font><font face="Times New Roman">MXML</font><font face="宋体">语言。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">MXML<font face="宋体">语言，是专门用于</font><font face="Times New Roman">Flex</font><font face="宋体">程序中，描述界面表现的一种</font><font face="Times New Roman">XML</font><font face="宋体">标记语言。我们可以用它来管理程序的整体布局，控制组建的央视和外观，也可以构建非可视化的对象，比如</font><font face="Times New Roman">XML</font><font face="宋体">数据、与服务器端通信的</font><font face="Times New Roman">WebService</font><font face="宋体">、组件的数据源等等。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'">3.1.1&nbsp;<font face="宋体">命名规范</font></span><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">类似网页中实用的<font face="Times New Roman">HTML</font><font face="宋体">语言，</font><font face="Times New Roman">MXML</font><font face="宋体">提供了一系列的标签供用户使用，到哪</font><font face="Times New Roman">MXML</font><font face="宋体">的语法更严格的多，他提供的内置标签也更丰富。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">MXML<font face="宋体">区分大小写，且文件名和变量标识名都区分大小写。字母大小写错误是编程中常见的错误，隐蔽性较高，有时很难排错。在编写代码时，应采用合理的命名规范，避免出现这类错误。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在<font face="Times New Roman">Flex</font><font face="宋体">程序中，每个</font><font face="Times New Roman">MXML</font><font face="宋体">文件必须以小写的&#8220;</font><font face="Times New Roman">mxml</font><font face="宋体">&#8221;作为后缀，文件名要遵循</font><font face="Times New Roman">ActionScript</font><font face="宋体">中变量的命名规则。因为在程序中，所有的</font><font face="Times New Roman">MXML</font><font face="宋体">文件名可以直接被</font><font face="Times New Roman">ActionScript</font><font face="宋体">当作一种用户定的数据类型来使用。因此，</font><font face="Times New Roman">MXML</font><font face="宋体">文件名不能和</font><font face="Times New Roman">ActionScript</font><font face="宋体">类文件同名，否则就会造成类型冲突。在</font><font face="Times New Roman">ActionScript</font><font face="宋体">中，变量名必须以字母或下划线开始，且只能包含字母、数字和下划线。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">需要注意的是，<font face="Times New Roman">MXML</font><font face="宋体">文件不能名为&#8220;</font><font face="Times New Roman">application</font><font face="宋体">&#8221;&nbsp;</font><font face="Times New Roman">,</font><font face="宋体">&#8220;</font><font face="Times New Roman">application</font><font face="宋体">&#8221;是住程序文件所采用的默认标记，不可以在被使用。也不能和程序中任意组件的</font><font face="Times New Roman">id</font><font face="宋体">值同名。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">例如，下面是<font face="Times New Roman">HelloWorld.mxml</font><font face="宋体">文件的源代码：</font></span><!--endfragment--></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Application&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Button&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="btn"</span><span style="color: #ff0000">&nbsp;x</span><span style="color: #0000ff">="51"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="107"</span><span style="color: #ff0000">&nbsp;label</span><span style="color: #0000ff">="Click&nbsp;me"</span><span style="color: #ff0000">&nbsp;click</span><span style="color: #0000ff">="trace('这是点击后的文字')"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Label&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="tip_txt"</span><span style="color: #ff0000">&nbsp;x</span><span style="color: #0000ff">="182"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="109"</span><span style="color: #ff0000">&nbsp;text</span><span style="color: #0000ff">="这是点击前的文字"</span><span style="color: #ff0000">&nbsp;fontSize</span><span style="color: #0000ff">="12"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="136"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Application</span><span style="color: #0000ff">&gt;</span></div>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">尝试作如下修改：</span><!--endfragment--></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Label&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="HelloWorld"</span><span style="color: #ff0000">&nbsp;x</span><span style="color: #0000ff">="182"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="109"</span><span style="color: #ff0000">&nbsp;text</span><span style="color: #0000ff">="这是点击前的文字"</span><span style="color: #ff0000">&nbsp;fontSize</span><span style="color: #0000ff">="12"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="136"</span><span style="color: #0000ff">/&gt;</span></div>
<p style="text-indent: 21pt" class="MsoNormal">&nbsp;</p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">再次编译，将无法通过编译，得到如下错误信息：<font face="Times New Roman">identifier&nbsp;</font></span><span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'">and</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;class&nbsp;may&nbsp;not&nbsp;have&nbsp;the&nbsp;same&nbsp;name<font face="宋体">，意思是说组件的唯一标识名&#8220;</font><font face="Times New Roman">id</font><font face="宋体">&#8221;不可以和对象重名。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">还有一点说明：程序不可以使用&#8220;<font face="Times New Roman">mx</font><font face="宋体">&#8221;作为目录名。&#8220;</font><font face="Times New Roman">mx</font><font face="宋体">&#8221;是</font><font face="Times New Roman">Flex&nbsp;Framework</font><font face="宋体">的官方组件库的命名空间，受到</font><font face="Times New Roman">Flex</font><font face="宋体">编译器的保护。假如在程序目录中创建了名为&#8220;</font><font face="Times New Roman">mx</font><font face="宋体">&#8221;的目录，这个目录中存放的</font><font face="Times New Roman">MXML</font><font face="宋体">文件和</font><font face="Times New Roman">ActionScript</font><font face="宋体">类文件都将无法使用，会被编译器忽略。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">为了避免文件名冲突，同时也为了增强程序的可读性，文件和变量一般采用有意义的单词、名词简写或字符组合来命名。下面介绍一些习惯用法：</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: -18pt; margin-bottom: 0pt; margin-left: 18pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">用类型的简写作后缀，比如：<font face="Times New Roman">LoginPanel</font><font face="宋体">表示登陆面板；</font><font face="Times New Roman">SendBtn</font><font face="宋体">表示发送按钮；</font><font face="Times New Roman">UserTxt</font><font face="宋体">表示文本组件。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: -18pt; margin-bottom: 0pt; margin-left: 18pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">使用下划线组合单词，比如：<font face="Times New Roman">User_Name</font><font face="宋体">、</font><font face="Times New Roman">User_Email</font><font face="宋体">表示用户的信息；</font><font face="Times New Roman">Move_Speed</font><font face="宋体">表示速度。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: -18pt; margin-bottom: 0pt; margin-left: 18pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">常量全部使用大写，比如：<font face="Times New Roman">PI</font><font face="宋体">表示圆周率；</font><font face="Times New Roman">CLICK_EVENT</font><font face="宋体">表示点击事件名。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">不管时使用哪种方式，目的都是为了提高程序的代码质量，这对开发和日后的维护都很有帮助。</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="text-indent: 21pt" class="MsoNormal"><!--endfragment--></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'">3.1.2&nbsp;MXML<font face="宋体">文件结构</font></span><span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">一个<font face="Times New Roman">MXML</font><font face="宋体">文件由哪些元素构成？我们已经知道</font><font face="Times New Roman">MXML</font><font face="宋体">文件其实是一个标准的</font><font face="Times New Roman">mxl</font><font face="宋体">文件，因此可以参考</font><font face="Times New Roman">XML</font><font face="宋体">语法来分析</font><font face="Times New Roman">MXML</font><font face="宋体">文件的内容。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">这里仍然以上一章实例的代码为例：</span></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Application&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Button&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="btn"</span><span style="color: #ff0000">&nbsp;x</span><span style="color: #0000ff">="51"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="107"</span><span style="color: #ff0000">&nbsp;label</span><span style="color: #0000ff">="Click&nbsp;me"</span><span style="color: #ff0000">&nbsp;click</span><span style="color: #0000ff">="trace('这是点击后的文字')"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Label&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="tip_txt"</span><span style="color: #ff0000">&nbsp;x</span><span style="color: #0000ff">="182"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="109"</span><span style="color: #ff0000">&nbsp;text</span><span style="color: #0000ff">="这是点击前的文字"</span><span style="color: #ff0000">&nbsp;fontSize</span><span style="color: #0000ff">="12"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="136"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Application</span><span style="color: #0000ff">&gt;</span></div>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在<font face="Times New Roman">MXL</font><font face="宋体">文件中，需要在第一行声明</font><font face="Times New Roman">XML</font><font face="宋体">文件采用的语法版本号和文件采用的编码格式。从上面的代码中可以看到这两个属性：</font><font face="Times New Roman">version</font><font face="宋体">和</font><font face="Times New Roman">encoding</font><font face="宋体">，其中</font><font face="Times New Roman">encoding</font><font face="宋体">编码格式这个属性是可选的。选定的编码格式必须符合文件采用的编码格式，默认为</font><font face="Times New Roman">utf-8</font><font face="宋体">格式。在中文操作系统中，一般都使用</font><font face="Times New Roman">utf-8</font><font face="宋体">这个编码格式，他兼容采用双字节编码的语言</font><font face="Times New Roman">(</font><font face="宋体">包括中文、韩文、日文等</font><font face="Times New Roman">)</font><font face="宋体">和其他常见的西方语言，而且跨平台，是使用最广发的编码格式。另外也可以使用简体中文专用编码</font><font face="Times New Roman">gb2312.</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">mx:Application<font face="宋体">标签是一个特殊的标签。在每个</font><font face="Times New Roman">Flex</font><font face="宋体">项目中，可能有多个</font><font face="Times New Roman">MXML</font><font face="宋体">文件，但作为程序入口的运行文件只有一个，主文件的标示是根节点为</font><font face="Times New Roman">mx</font><font face="宋体">：</font><font face="Times New Roman">Application</font><font face="宋体">，一个程序中只能出现一个</font><font face="Times New Roman">mx</font><font face="宋体">：</font><font face="Times New Roman">Application</font><font face="宋体">节点。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在根节点中，还看到了一个属性：<font face="Times New Roman">xmlns:mx=http://www.adobe.com/2006/mxml</font><font face="宋体">，表示将</font><font face="Times New Roman">mx</font><font face="宋体">定义为</font><font face="Times New Roman">MXL</font><font face="宋体">的命名空间。</font><font face="Times New Roman">xmlns</font><font face="宋体">标签专门用来定义</font><font face="Times New Roman">XML</font><font face="宋体">的命名空间，</font><font face="Times New Roman">XML</font><font face="宋体">命名空间可以用来定义一套独立的</font><font face="Times New Roman">XML</font><font face="宋体">标签，并且为这些标签制定特殊的解析方式。比如</font><font face="Times New Roman">XML</font><font face="宋体">中默认的标签格式为：</font><font face="Times New Roman">&lt;Button&gt;node&lt;/Button&gt;</font><font face="宋体">，这里的</font><font face="Times New Roman">Button</font><font face="宋体">节点被作为一个普通的文本节点，没有什么特殊的意义。定义命名空间后，在节点上就爱上空间前缀：</font><font face="Times New Roman">&lt;mx:Button&gt;&lt;/mx:Button&gt;</font><font face="宋体">，这时候</font><font face="Times New Roman">mx:Button&nbsp;</font><font face="宋体">就代表</font><font face="Times New Roman">mx</font><font face="宋体">空间下的</font><font face="Times New Roman">Button</font><font face="宋体">对象。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">mx<font face="宋体">命名空间对应的路径是&#8220;</font><font face="Times New Roman">http://www.adobe.com/2006/mxml</font><font face="宋体">&#8221;</font><font face="Times New Roman">,Flex</font><font face="宋体">的配置文件中将这个路径定义为一个全局资源标识符，并对应了一个</font><font face="Times New Roman">MXL</font><font face="宋体">文件。在这个文件中，列出了</font><font face="Times New Roman">mx</font><font face="宋体">命令空间下的所有标签。在</font><font face="Times New Roman">Flex&nbsp;Builder2</font><font face="宋体">的安装路径下，进入</font><font face="Times New Roman">Flex&nbsp;SDK2\frameworks</font><font face="宋体">目录中，找到</font><font face="Times New Roman">flex-config.xml&nbsp;</font><font face="宋体">文件并使用记事本或其他编辑工具打开，找到下面的内容：</font></span><!--endfragment--></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">namespaces</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">—Specify&nbsp;a&nbsp;URI&nbsp;to&nbsp;associate&nbsp;with&nbsp;a&nbsp;manifest&nbsp;of&nbsp;components&nbsp;for&nbsp;use&nbsp;as&nbsp;MXML--</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">—elements.<br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #ff00ff">&nbsp;&nbsp;&nbsp;&lt;namespace</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">uri</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">http://www.adobe.com/2006/mxml</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">uri</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">manifest</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">mxml-manifest.xml</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">manifest</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">namespace</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">8</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">namespaces</span><span style="color: #0000ff">&gt;</span></div>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">从上面的配置中发现，<font face="Times New Roman">http://www.adobe.com/2006/mxml </font><font face="宋体">这个</font><font face="Times New Roman">URI</font><font face="宋体">和</font><font face="Times New Roman">mxml-manifest.xml</font><font face="宋体">文件对应。下面打开同目录下的</font><font face="Times New Roman">mxml-manifest.xml&nbsp;</font><font face="宋体">文件，里面列出了</font><font face="Times New Roman">MXML</font><font face="宋体">中的所有标签和与标签相关的类文件路径。</font></span><!--endfragment--></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">componentPackage</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="Accordion"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.containers.Accordion"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="AddChildAction"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.effects.AddChildAction"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="AnimateProperty"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.effects.AnimateProperty"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="Application"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.core.Application"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="ApplicationControlBar"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.containers.ApplicationControlBar"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="ArrayCollection"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.collections.ArrayCollection"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="Blur"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.effects.Blur"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />..<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="SecureHTTPChannel"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.messaging.channels.SecureHTTPChannel"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="SecureRTMPChannel"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="mx.messaging.channels.SecureRTMPChannel"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">componentPackage</span><span style="color: #0000ff">&gt;</span></div>
<p style="text-indent: 21pt" class="MsoNormal">&nbsp;</p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在这份列表中，节点的<font face="Times New Roman">id</font><font face="宋体">代表标签名，</font><font face="Times New Roman">class</font><font face="宋体">表示类文件的路径。比如</font><font face="Times New Roman">mx:Application</font><font face="宋体">标签，也就是对应了</font><font face="Times New Roman">mx.core.Application</font><font face="宋体">类。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在开发中，当程序中有很多的<font face="Times New Roman">MXML</font><font face="宋体">文件和</font><font face="Times New Roman">AS</font><font face="宋体">文件时，为了方便调用，我们可以将功能类似的文件放在一个文件夹中，定义一个命名空间，这样会节省很多时间。在自定义命名空间时，为了方便，一般直接指定命名空间包括的标签路径。比如：</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">xmlns<font face="宋体">：</font><font face="Times New Roman">myComp="components.*"</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">因为使用了通配符&#8220;<font face="Times New Roman">*</font><font face="宋体">&#8221;，</font><font face="Times New Roman">components</font><font face="宋体">目录下的所有</font><font face="Times New Roman">MXML</font><font face="宋体">文件和</font><font face="Times New Roman">ActionScript</font><font face="宋体">类文件</font><font face="Times New Roman">(</font><font face="宋体">不包括目录和目录中的文件</font><font face="Times New Roman">)</font><font face="宋体">都被包括在</font><font face="Times New Roman">myComp</font><font face="宋体">命名空间下。假如</font><font face="Times New Roman">components</font><font face="宋体">中有一个</font><font face="Times New Roman">LoginPanelmxml</font><font face="宋体">文件，则在程序中调用者个文件时，代码如下：</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">&lt;myComp<font face="宋体">：</font><font face="Times New Roman">LoginPanel&gt;&lt;/myComp</font><font face="宋体">：</font><font face="Times New Roman">LoginPanel&gt;</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">myComp<font face="宋体">下的标签被自动指向</font><font face="Times New Roman">components</font><font face="宋体">中的文件。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">当标签数量较多且分布在不同文件夹时，可以模仿<font face="Times New Roman">Flex</font><font face="宋体">配置文件的做法，使用</font><font face="Times New Roman">XML</font><font face="宋体">文件来描述标签的路径。在后面的内容中，我们会经常看到命名空间的使用。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Application<font face="宋体">标签中还有一个属性</font><font face="Times New Roman">layout</font><font face="宋体">，这个属性定义了</font><font face="Times New Roman">Application</font><font face="宋体">节点下元素的布局方式。由于</font><font face="Times New Roman">Application</font><font face="宋体">是根节点，因此他的布局方式决定了程序的总体布局方式。&#8220;</font><font face="Times New Roman">absolute</font><font face="宋体">&#8221;表示决定定位，所有子元素将按照各自的</font><font face="Times New Roman">x</font><font face="宋体">、</font><font face="Times New Roman">y</font><font face="宋体">坐标来定位。</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Application<font face="宋体">节点中有两个子节点，分别是</font><font face="Times New Roman">mx:Button</font><font face="宋体">和</font><font face="Times New Roman">mx:Label</font><font face="宋体">节点，代表了两个组件，节点中的属性定义了组件初始化后的一些状态，比如坐标、标示名、文字等等。</font></span><br />
<br />
</span></font></strong><span style="font-family: 宋体"><br />
<span style="color: red"><strong>说明：由于在网上相关资源太少所以本文是按照《Flex第一步》编写，由于时间比较短所以第三章内容没有全部出来同时编写过程中有错别字，请大家担待。^_^</strong></span></span></p>
<img src ="http://www.blogjava.net/zhangsenwei/aggbug/292998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangsenwei/" target="_blank">张森炜</a> 2009-08-28 17:35 <a href="http://www.blogjava.net/zhangsenwei/archive/2009/08/28/292998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>