﻿<?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-Java &amp;&amp; Flex-文章分类-Flex</title><link>http://www.blogjava.net/sl2cj/category/10601.html</link><description>&lt;br&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp----&gt;乞怪猪blog搬家了--[www.ialway.com/blog]--希望继续关注!谢谢!^0^</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 05:52:38 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 05:52:38 GMT</pubDate><ttl>60</ttl><item><title>õFlex Builderݼ </title><link>http://www.blogjava.net/sl2cj/articles/74831.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 12 Oct 2006 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/74831.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/74831.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/74831.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/74831.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/74831.html</trackback:ping><description><![CDATA[
		<div class="right-title-n">
				<h1>
						<font size="2">õFlex Builderݼ </font>
				</h1>
				<h2>
						<font size="2">ߣBing   :ת   Դ:</font>
						<a class="f-14" href="http://www.j2eemx.com/RIP/article.cfm?ATC_ID=CD47E419-3048-2B5A-26AEAA3A65E55F2C">
								<font color="#002c99" size="2">Ris</font>
						</a>
				</h2>
		</div>
		<div class="title-info">
				<div id="iframe-click">
						<iframe style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 400px; PADDING-TOP: 0px; HEIGHT: 25px" src="teachInfo.aspx?id=5253" frameborder="0" scrolling="no">
						</iframe>
				</div>
		</div>
		<div class="content-700">
				<div class="content-f">
						<font size="2">
						</font>
						<div class="article_content">
								<p>
										<font size="2">AdobeڿFlexĹ߾Flex BuilderȻ£""ټһ㿪˵ǳãǵˣܶټϼǻϵͳ֮ͬٸ˵Ctrl + CǸƣCtrl + Vϣҵϵͳ༭ǲǶһأע⵽ͻ᲻ѷ֣ʵFlex BuilderкܶEclipse༭Ҳ֮</font>
								</p>
								<p>
										<font size="2">ðɣ</font>
								</p>
								<p>
										<font size="2">Ctrl-F11: ִУRun <br />F11: Debug <br />Ctrl-Alt-Down: ظĿǰڱ༭УRepeat current line <br />Alt-Up: ƶУѡƶMove line (or selection) up <br />Alt-Down: ƶУѡƶMove line (or selection) down <br />Ctrl-Click: Go to definition (also F3) <br />Ctrl-D: ɾУDelete line <br />Alt-/: ԶɣWord completion (cycles through possible matches) <br />Ctrl-Up: ϣScroll up <br />Ctrl-Down: £Scroll Down </font>
								</p>
								<p>
										<font size="2">Flex Builder:http://labs.adobe.com/</font>
								</p>
								<p>
										<font size="2">иFDT &amp; EclipseټԲοá<br /></font>
										<a href="http://www.betriebsraum.de/blog/wp-content/uploads/2006/03/fdt_shortcuts.pdf">
												<font color="#0000ff" size="2">http://www.betriebsraum.de/blog/wp-content/uploads/2006/03/fdt_shortcuts.pdf</font>
										</a>
								</p>
								<p>
										<font size="2">]FDTEclipsePluginȫFlash Development ToolڱдFlashʽ˵Ƿǳõѹߣ</font>
								</p>
						</div>
				</div>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/74831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-12 17:47 <a href="http://www.blogjava.net/sl2cj/articles/74831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转帖】Flex2 学习笔记Ⅰ [2] </title><link>http://www.blogjava.net/sl2cj/articles/73974.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Mon, 09 Oct 2006 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/73974.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/73974.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/73974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/73974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/73974.html</trackback:ping><description><![CDATA[
		<font size="2">
				<strong>转帖】Flex2 学习笔记Ⅰ [2]</strong>
				<!-- vB 中文修改开始: 显示声望 -->
				<!-- vB 中文修改结束 -->
				<hr style="COLOR: #fff" size="1" />
				<!-- / icon and title -->
				<!-- message -->
		</font>
		<div id="post_message_22374" style="OVERFLOW-X: hidden">
				<font size="2">下面左边的箭头图标是运行当前项目，右边的小虫子是以 Debug 模式运行。就在左上角，你注意点就看到了。<br /></font>
				<div align="center">
						<font size="2">
								<img onmouseover="if(this.alt) this.style.cursor='pointer';" onclick="if(this.alt) window.open('http://www.blueidea.com/articleimg/2006/08/3949/05.gif');" alt="" src="http://www.blueidea.com/articleimg/2006/08/3949/05.gif" onload="if(this.width&gt;screen.width-300) {this.width=screen.width-300;this.alt='本图片已被缩小，点击查看原大小图片。';}" border="0" />
						</font>
				</div>
				<font size="2">代码第一行不说了，地球人都知道……<br />mx:Application 相当于 Flash 里面的 _root 吧，偶觉得应该可以这么说，只不过在这里没有了时间帧的概念而已。 layout="absolute" 就是内容的绝对定位了。我们来开始在这里加一段： creationComplete="init(event)" ，意思是初始化完毕后执行 init 函数。<br />然后我们在 mx:Application 加入一个节点 &lt;mx:Script&gt; ，输入完毕后会自动生成 CDATA 信息，如果你是复制过去的就得自己来写了。 script 里面就是我们写 AS 的地方，不过这里换成了 AS3 还真是不习惯。= = 我们来输入 private function init(event:FlexEvent):void {}，完毕后上面会自动插入 import mx.events.FlexEvent; ， AS3 几乎用到的东西都需要 import 。此外别问偶 private public 什么的，不懂的回去补习 AS2 。完成后代码如下：<br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init(event)" layout="absolute"&gt;<br />&lt;mx:Script&gt;<br />&lt;![CDATA[<br />import mx.events.FlexEvent;<br />private function init(event:FlexEvent):void {<br />}<br />]]&gt;<br />&lt;/mx:Script&gt;<br />&lt;/mx:Application&gt;<br />既然是 HelloWorld ，我们就在 init 里面输入 trace("HelloWorld!"); 吧，在 Debug 模式下输出， OK ， Console 窗口出现 HelloWorld! 字样，恭喜你，成功的制作出一个 Flex 程序来（第一节就到这里大家没意见吧？反正也就只是 HelloWorld ……）。当然，为了避免臭鸡蛋烂番茄什么的，偶再增加点内容……<br />代码里加上： private var str:String = "HelloWorld!"; ， 然后 trace(str); ，嗯，一个稍微复杂点点的程序就出来了，真棒。<br />把 trace 换成 Alert 或许会更有成就感：<br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init(event)" layout="absolute"&gt;<br />&lt;mx:Script&gt;<br />&lt;![CDATA[<br />import mx.controls.Alert;<br />import mx.events.FlexEvent;<br />private var str:String = "HelloWorld!";<br />private function init(event:FlexEvent):void {<br />Alert.show(str);<br />}<br />]]&gt;<br />&lt;/mx:Script&gt;<br />&lt;/mx:Application&gt;<br /></font>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/73974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-09 10:06 <a href="http://www.blogjava.net/sl2cj/articles/73974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Quick Starts中文翻译（三）</title><link>http://www.blogjava.net/sl2cj/articles/73960.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Mon, 09 Oct 2006 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/73960.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/73960.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/73960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/73960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/73960.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">Adobe® Flex™应用程序是事件驱动的。当用户与界面组件交互时事件会通知程序员，<br />当一个组件的外观或者生命周期发生重要改变，比如创建或者销毁一个容器，或改 变一个容器的大小的时候，事件也会通知程序员。</font>
		</p>
		<p>
				<font size="2">当一个组件的实例分派一个事件时，你为那个事件注册的监听器对象就会被通知。 你可以在 ActionScript 中定义事件监听器（或者叫做事件处理器）来处理事件。你 既可以在 MXML 声明中为一个组件注册事件监听器，也可以在 ActionScript 中实现 相同的功能。</font>
		</p>
		<p>
				<font size="2">接收事件通知有三种方式：<br /> 在 MXML 中注册一个事件处理器<br /> 在 MXML 中创建一个内联（inline）的事件处理器<br /> 通过 ActionScript 注册一个事件处理器</font>
		</p>
		<p>
				<font size="2">在 MXML 中注册一个事件处理器<br />第一个，而且是最广泛地被用来接收事件通知的方法就是在 MXML 中定义一个事件处 理器，当事件发生时就调用它。<br />在这个例子中，你为一个 Button 控件的 click（点击）事件定义了一个事件处理器。 当用户点击这个 Button 控件时，事件处理器会把 Label 控件的 text 属性设成  "Hello，World!"。</font>
		</p>
		<p>
				<font size="2">示例</font>
		</p>
		<p>
				<font size="2">＜?xml  version="1.0"  encoding="utf-8"?&gt;<br />＜mx:Application<br />xmlns:mx="</font>
				<a href="http://www.adobe.com/2006/mxml">
						<u>
								<font color="#000000" size="2">http://www.adobe.com/2006/mxml</font>
						</u>
				</a>
				<font size="2">"<br />width="300"  height="200"<br />horizontalAlign="center"  verticalAlign="middle"<br />viewSourceURL="src/HandlingEventsEventHandler/index.html"&gt;<br />＜mx:Script&gt;<br />＜![CDATA[<br />import  flash.events.MouseEvent;<br />private  function  clickHandler  (  event:MouseEvent  ):void<br />{<br />myLabel.text  =  "Hello，World!";<br />} <br />]]&gt; <br />＜/mx:Script&gt;<br />＜mx:Panel<br />title="My  Application"  horizontalAlign="center"<br />paddingTop="10"  paddingBottom="10"  paddingLeft="10"<br />paddingRight="10"  &gt;<br />＜mx:Label  id="myLabel"  width="180"  fontWeight="bold"<br />fontSize="24"/&gt; <br />＜mx:Button  id="myButton"  label="Click  Me!" <br />click="clickHandler(event);"  /&gt; <br />＜/mx:Panel&gt;<br />＜/mx:Application&gt;</font>
		</p>
		<div class="cc">
				<p>
						<font size="2">运行结果图示：</font>
				</p>
				<p align="center">
						<font size="2">
								<img src="http://www.webjx.com/upfiles/20060922/20060922110107_3.png" />
						</font>
				</p>
				<p>
						<font size="2">译注：由于文档中无法嵌入 SWF 文件，代码运行结果请查看原文中相应的部分。</font>
				</p>
				<p>
						<font size="2"> <strong>在 MXML 中创建一个内联（inline）的事件处理器</strong></font>
				</p>
				<p>
						<font size="2"> 有时响应事件的最简单的方法就是完全在一个组件的 MXML 声明中定义事件处理器。 这就是使用一个内联（inline）的事件处理器。</font>
				</p>
				<p>
						<font size="2"> 在下面的例子中，你设定了＜mx:Button&gt;标签的click属性，所以它可以直接设定 Label控件的text属性，而不需要调用一个事件处理器方法。</font>
				</p>
				<p>
						<br />
						<font size="2">提示：使用内联事件处理器可能比较快而且代码较少，但是它也可以影响代码的易读性，可维护性和可扩展性。一个好的经验法则就是不要在内联事件处理器中包含 一条语句以上的 ActionScript。如果你必须包含更复杂的逻辑，就把它放到一个 ActionScript helper 方法（即第一种方法）或者一个 ActionScript 事件处理器（即 第三种方法）中。</font>
				</p>
				<p>
						<font size="2">示例<br />＜?xml  version="1.0"  encoding="utf-8"?&gt;<br />＜mx:Application<br />xmlns:mx="http://www.adobe.com/2006/mxml"<br />viewSourceURL="src/HandlingEventsInlineMethod/index.html"<br />horizontalAlign="center"  verticalAlign="middle"<br />width="300"  height="200"&gt;<br />＜mx:Panel <br />title="My  Application"  horizontalAlign="center" <br />paddingTop="10"  paddingBottom="10"  paddingLeft="10"<br />paddingRight="10"&gt; <br />＜mx:Label  id="myLabel"  width="180"  fontWeight="bold" <br />fontSize="24"/&gt; <br />＜mx:Button  id="myButton"  label="Click  Me!"  click="myLabel.text  =<br />'Hello,  World!'"  /&gt; <br />＜/mx:Panel&gt;<br />＜/mx:Application&gt;<br />运行结果图示：</font>
				</p>
				<p align="center">
						<font size="2">
								<img src="http://www.webjx.com/upfiles/20060922/20060922110107_3.png" />
						</font>
				</p>
		</div>
		<p>
				<font size="2">通过 ActionScript 注册一个事件监听器<br />你也可以通过使用 ActionScript 注册一个事件处理器来响应事件。 在这个例子中，使用ActionScript中的addEventHandler()  方法注册了一个事件监<br />听器。这个addEventHandler()方法被放在了用来处理Application容器的<br />creationComplete事件的事件处理器中。<br />提示：程序开始运行的时候，在Application的外观和它的子组件初始化完毕之后， Application的creationComplete事件就会发生。creationComplete事件的处理器提 供了一个很方便的地方来放置注册事件监听器的ActionScript代码。</font>
		</p>
		<p>
				<font size="2">示例<br />＜?xml  version="1.0"  encoding="utf-8"?&gt;<br />＜mx:Application<br />xmlns:mx="http://www.adobe.com/2006/mxml"<br />viewSourceURL="src/HandlingEventsActionScript/index.html"<br />horizontalAlign="center"  verticalAlign="middle"<br />width="300"  height="200"<br />creationComplete="creationCompleteHandler(event);"&gt;<br />＜mx:Script&gt; <br />＜![CDATA[ <br />import  flash.events.MouseEvent;<br />import  mx.events.FlexEvent; <br />private  function<br />creationCompleteHandler(event:FlexEvent):void<br /> <br />{</font>
		</p>
		<p>
				<font size="2">clickHandler);<br />}<br /> //  Listen  for  the  click  event  on  the  Button  control<br />myButton.addEventListener  (MouseEvent.CLICK,<br /> private  function  clickHandler  (  event:Event  ):void<br />{<br />myLabel.text  =  "Hello,  World!";</font>
		</p>
		<p>
				<font size="2">} <br />]]&gt; <br />＜/mx:Script&gt;<br />＜mx:Panel<br />title="My  Application"  horizontalAlign="center"<br />paddingTop="10"  paddingBottom="10"  paddingLeft="10"<br />paddingRight="10"&gt;<br />＜mx:Label  id="myLabel"  width="180"  fontWeight="bold"<br />fontSize="24"/&gt; <br />＜mx:Button  id="myButton"  label="Click  Me!"  /&gt; <br />＜/mx:Panel&gt;<br />＜/mx:Application&gt;<br />运行结果图示：</font>
		</p>
		<p align="center">
				<font size="2">
						<img src="http://www.webjx.com/upfiles/20060922/20060922110107_3.png" />
				</font>
		</p>
		<p>
				<font size="2">小编物语：本文援引</font>
				<a class="" href="http://www.zhuoqun.net/" target="">
						<u>
								<font size="2">
										<font color="#0000ff">Dreamer's Blog</font>
										<font color="#000000">
										</font>
								</font>
						</u>
				</a>
				<font size="2">，特此感谢作者的努力。大家如果觉得这篇教程正是你所需要的话，请别忘了去作者的博客打打气啊。</font>
		</p>
<img src ="http://www.blogjava.net/sl2cj/aggbug/73960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-09 09:23 <a href="http://www.blogjava.net/sl2cj/articles/73960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Quick Starts中文翻译（二）</title><link>http://www.blogjava.net/sl2cj/articles/73955.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Mon, 09 Oct 2006 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/73955.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/73955.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/73955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/73955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/73955.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">因为 MXML 文件是普通的 XML 文件，所以有很多的开发环境供你选择。你可以使用简单的文本编辑器，专门的 XML 编辑器，或者支持文本编辑的集成开发环境（IDE）来 编写 MXML 代码。Flex 提供了一个叫做 Adobe®  Flex™  Builder™  2 专门的 IDE，你可 以使用它来开发你的应用程序。<br />MXML 文件的第一行是 XML 声明。每个 MXML 文件的第一行都必须是 XML 声明。 接下来的一行是&lt;mx:Application&gt;  标签，它定义了Application容器，而且它是每一个Flex应用程序的根标签。</font>
		</p>
		<p>
				<font size="2">&lt;mx:Panel&gt;标签定义了一个Panel容器，它包含有一个标题栏，一个标题，一个状态 信息，一个边框，以及用来放置子容器或空间的内容区域。它的title（标题）属性 的值被设定为  "My  Application"。<br />&lt;mx:Label&gt;标签定义了一个Label控件，它是一个可以显示文本的很简单的用户界面 组件。它的text属性被设定为  "Hello,  World!"。<br />&lt;mx:Label&gt;  标签的fontWeight  和  fontSize  属性改变了使用字体的样式。你也可 以使用CSS给你的组件加上样式。<br />更多信息，请看Flex开发者指南中的“使用层叠样式表（CSS）”。 注意：你可以使用命令行编译器  mxmlc 或者 Flex Builder 2  来编译你的 Flex 程序。<br />关于使用 mxmlc 编译程序的步骤，请看“</font>
				<a class="" href="http://www.5d.cn/Tutorial/flash/base/200609/4437_4.html" target="">
						<font color="#0000ff" size="2">
								<u>使用 MXML 和 ActionScript 编程</u>
						</font>
				</a>
				<font size="2">”（译注： 此篇我已经译成中文）。</font>
		</p>
		<p>
				<font size="2">示例</font>
		</p>
		<p>
				<font size="2">&lt;?xml  version="1.0"  encoding="utf-8"?＞<br />&lt;mx:Application<br />xmlns:mx="http://www.adobe.com/2006/mxml"<br />viewSourceURL="src/HelloWorld/index.html"<br />horizontalAlign="center"  verticalAlign="middle"<br />width="300"  height="160"＞<br />&lt;mx:Panel<br />paddingTop="10"  paddingBottom="10"  paddingLeft="10"<br />paddingRight="10"<br />title="My  Application"＞</font>
		</p>
		<p>
				<br />
				<font size="2">&lt;mx:Label  text="Hello  World!"  fontWeight="bold"  fontSize="24"/＞<br />&lt;/mx:Panel＞ <br />&lt;/mx:Application＞ </font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm -1pt 0pt 6pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-line-height-rule: exactly; mso-layout-grid-align: none" align="left">
				<font size="2">
						<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Arial Unicode MS'; LETTER-SPACING: 0.05pt; POSITION: relative; TOP: -0.5pt; mso-hansi-font-family: 'Times New Roman'; mso-text-raise: .5pt; mso-font-kerning: 0pt">运行结果图示：</span>&gt;<img src="http://www.webjx.com/upfiles/20060922/20060922105714_2.png" /></font>
		</p>
		<p>
				<font size="2">译注：由于文档中无法嵌入 SWF 文件，代码运行结果请查看原文中相应的部分。</font>
		</p>
<img src ="http://www.blogjava.net/sl2cj/aggbug/73955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-09 09:14 <a href="http://www.blogjava.net/sl2cj/articles/73955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Quick Starts中文翻译（一）</title><link>http://www.blogjava.net/sl2cj/articles/73948.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Mon, 09 Oct 2006 01:06:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/73948.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/73948.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/73948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/73948.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/73948.html</trackback:ping><description><![CDATA[
		<p>
				<strong>
						<font size="2">前言</font>
				</strong>
		</p>
		<p>
				<font size="2">Adobe  Flex  2.0 是一项新兴的技术，它基于强大的已经很成熟的 J2EE 平台，具有一些很强大并 且迷人的特性，比如 Flash 的表现能力，丰富的媒体和离线能力等等。Flex 2.0 虽然在前台表现<br />为 Flash，却是更多地面向开发者（developer），而不是设计者（designer）。你只需要编写代码就 可以使用各种控件做出很漂亮的东西，这是许多缺少艺术细胞的开发人员向往的事情。而且 Flex 除去了 Flash 中一些令很多人费解的东西，比如帧，元件等（我本人就怎么努力也无法学会 Flash， 郁闷），完全可以将界面设计和逻辑实现分离开来，使美工和程序员专注于自己的东西，相信这 也是大家所希望看到的。</font>
		</p>
		<p>
				<font size="2">其实  Flex  2.0  也不算是 太新的东西 ，在  Flex  2.0  之前已经 有了  MacroMedia  Flex  1.0  和 MacroMedia  Flex  1.5，不过国内很少有人关注。Flex  1.0 和 1.5 的性能都不是很好，编译出来的 SWF 文件很大，而且  Flex Builder 1.5 是一个类似于 Dreamweaver 的编辑器，狂占内存，我的机 器配置又不是太先进，用起来苦不堪言，调试的时候每每都要等上一段时间页面才能编译并显 示出来。由于这些原因，大多数人对 Flex 都只是观望态度。但是 Adobe 收购了 MacroMedia 之 后推出的 Flex 2.0 相对于 Flex 1.5 可以说是一个全新的版本，是 Flex 的真正的起点。它使用了强 面向对象的功能强大的 ActionScript 3.0 取代了以前的 ActionScript 版本，使得运行效率大大提高， 编译出来的 SWF 文件体积也缩小很多。而且 Adobe 摒弃了以前的 Flex  Builder，做了全新的基<br />于 Eclipse 的 Flex Builder 2.0，使得开发环境改进良多，提高了开发者的体验（用起来确实舒服 多了，代码提示等方面做的很不错，我可以证明  ^_^）。</font>
		</p>
		<p>
				<font size="2">Adobe Flex 2.0 可以称得上是最强大的 RIA（Rich Internet Application，富因特网应用程序）开发 工具。但是由于国内比较落后，很多新技术出来好像都要等上几年才能传到国内并且流行。怎 么办？加强经济建设，加快改革开放，使中国赶紧成为发达国家，让人家做的软件研究的技术 发行出来就有中文版的……  不过这些好像纯粹是幻想，至少近期是不可能了，没有办法，只好 去啃英文文档。然而关于 Flex 的英文资料也不是很多，Flex 自带的帮助是最好的文档，而且看 英文文档的效率是很低的，远不如看母语来的畅快。我深知其中痛楚，所以就想翻译一些入门 的文章供大家参考，而最好的入门文章莫过于 Adobe Flex 开发者中心的这些 Quick Starts。以后 我会逐步把它们翻译出来，可能全部翻译，也可能只翻译其中一部分，我会把翻译的所有这些 都做成 PDF 文件放到网上，算是对初学者的帮助，也是对自己的一种历练（说了那么多乱七八 糟的，现在才说重点，发现自己废话也够多）。原文中的一些示例不能嵌入到 PDF 中，所以大家 如果想看代码运行情况，还请到原文中去找。另外，由于本人英语水平和技术水平极其有限， 审校工作也做得不好，书中出现错误或者不妥之处在所难免，恳请并热烈欢迎大家批评指正， 先谢谢大家。</font>
		</p>
		<p>
				<font size="2">虽然只是翻译几篇文章发出来，读者也可能很少，但是我还是想在这里感谢几个人（虚荣一下， 莫怪  ^_^），他们是我的兄弟们：冬瓜，小侯，雷子，张霄。虽然他们没有对翻译做任何贡献而 且有可能问 Flex 是不是很好吃，但是他们是我的精神支柱和生活中的重要部分。谢谢你们，我 以你们为荣。</font>
		</p>
		<p>
				<font size="2">使用 MXML 和 ActionScript 编程<br />Adobe®是把 Flex 作为一个 ActionScript 类库实现的。这个类库包含了组件（容器<br />和控件），manager 类，数据服务类，以及具有其他特性的类。你可以通过使用带有 类库的 MXML 和 ActionScript 语言来开发应用程序。</font>
		</p>
		<p>
				<font size="2">MXML</font>
		</p>
		<p>
				<font size="2">MXML 是一个可以让你在 Adobe® Flex™中布局用户界面组件的一种 XML 语言。你也可 以使用 MXML 声明来定义程序中的非可视化组件，比如对服务器端数据源的访问以及 用户界面组件和数据源之间的数据绑定。<br />比如，你可以像下面这样，使用＜mx:Button＞标签来创建 Button 控件的一个实例：<br />＜mx:Button  id="myButton"  label="I‘m  a  button!"/＞<br />这里通过设定 id 属性赋予了这个 Button 实例一个独一无二的名字，你以后可以使 用这个名字来引用这个实例。而 label  属性用来设置显示在这个 Button 实例上的标 签内容。</font>
		</p>
		<p>
				<font size="2">下面的例子展示了用来创建一个展示 Button 控件的 Flex 程序的完整代码：<br />＜?xml  version="1.0"  encoding="utf-8"?＞<br />＜mx:Application<br />xmlns:mx="</font>
				<a href="http://www.adobe.com/2006/mxml">
						<u>
								<font color="#000000" size="2">http://www.adobe.com/2006/mxml</font>
						</u>
				</a>
				<font size="2">"<br />horizontalAlign="center"  verticalAlign="center"＞</font>
		</p>
		<p>
				<font size="2">＜mx:Button  id="myButton"  label="I’m  a  button!"  /＞<br />＜/mx:Application＞</font>
		</p>
		<p>
				<font size="2">当你编写完一个 Flex 程序之后，你必须使用 Flex 编译器编译它。Flex 编译器是一 个叫做  mxmlc 的小型执行文件，它在你的 Flex  2 安装目录下的 Flex  SDK  2.0\bin 文件夹中。<br />提示：请确定 Flex  2 安装目录\  Flex  SDK  2.0\bin 文件夹在你的系统变量中。把 Flex 编译器设定到你的系统变量中可以使你不管在哪个文件夹下都可以从命令行直<br />接调用它。</font>
		</p>
		<p>
				<font size="2">步骤：</font>
		</p>
		<p>
				<font size="2">1.  用你喜欢的文本编辑器创建一个新的文件（比如，记事本）并把它保存为<br />MyFirst.mxml。</font>
		</p>
		<p>
				<font size="2">2.  把前面例子中的代码写入 MyFirst.mxml 中并保存文件。</font>
		</p>
		<p>
				<font size="2">3.  通过选择  开始  ＞  所有程序  ＞  附件  ＞  命令提示符  ，打开一个命令行窗口。<br />4.  改变当前的目录，将它指向你在第一步中保存的 Flex 程序所在的文件夹。<br />5.  敲入下面的命令来调用 Flex 编译器：<br />mxmlc  --strict=true  --file-specs  MyFirst.mxml<br />命令行中以两个短划线开头的两个元素就是所谓的编译器选项，它们被用来 定义 Flex 编译器的行为。在上一个例子中，你把  –strict  选项设为 true  来 强制编译器执行 strict 模式。在 strict 模式中，编译器对你的代码有更严 格的检查。比如，它会检查你是否为变量定义了类型。--file-specs 用来定 义需要编译的 MXML 文件。<br />6.  你可以在 Windows 资源管理器中双击 SWF 文件来运行它，也可以在命令行中 输入它的名字在独立的 Adobe  Flash  Player  9 中运行它。</font>
		</p>
		<p align="center">
				<font size="2">
						<img src="http://www.webjx.com/upfiles/20060922/20060922105539_01.jpg" />
				</font>
		</p>
		<p>
				<font size="2">运行结果图示：</font>
		</p>
		<p align="center">
				<font size="2">
						<img src="http://www.webjx.com/upfiles/20060922/20060922105554_2.png" />
				</font>
		</p>
		<p>
				<font size="2">译注：由于文档中无法嵌入 SWF 文件，代码运行结果请查看原文中相应的部分。</font>
		</p>
		<p>
				<font size="2">提示：你也可以使用Adobe Flex Builder 2 来创建和编译你的Flex应用程序。AdobeFlex Builder2是一个含有一个可视化设计视图的开发Flex的集成开发环境（IDE）。 想要获得更多关于Flex  Builder2的信息，请看使用  Flex  Builder2。</font>
		</p>
		<p>
				<font size="2">ActionScript<br />MXML 标签与 ActionScript 类或者类中的属性是相对应的。当你编译你的 Flex 应用 程序的时候，Flex 解析你的 MXML 标签并且生成相应的 ActionScript 类。然后这些 ActionScript 类会被编译成 SWF 字节码存储到一个 SWF 文件中。<br />提示：你可以把--keep-generated-actionscript  选项添加到你的 mxmlc 命令行中， 来查看 Flex 生成的 ActionScript 中间文件。<br />继续看上面的例子，Flex 提供了一个定义 Flex Button 控件的 ActionScript Button类。<br />注意：在上面的例子中，＜mx:Button＞标签中的  mx 前缀是一个命名空间。它是通过<br />在 Application 标签中使用一个独一无二的 URL 来声明的。mx 前缀把在 mx 命名空间 中的每个组件映射到它的完全限定类名。这就是为什么 Flex 编译器可以在找到与 mx 命名空间中的 MXML 标签相对应的 ActionScript 类。<br />下面的例子展示了如何使用 ActionScript 来创建一个 Button 控件。最后结果和前 面的 MXML 版本的结果是一样的。</font>
		</p>
		<p>
				<font size="2">＜?xml  version="1.0"  encoding="utf-8"?＞<br />＜mx:Application<br />xmlns:mx="http://www.adobe.com/2006/mxml"<br />viewSourceURL="src/GettingStartedActionScript/index.html"<br />creationComplete="creationCompleteHandler();"<br />width="300"  height="80"  ＞<br /> ＜mx:Script＞<br />＜![CDATA[ <br />import  mx.controls.Button; <br />import  mx.events.FlexEvent;<br />  private  var  myButton:Button;<br />  private  function  creationCompleteHandler():void<br />  { <br />//  创建一个 Button 实例并设置其标签<br />myButton  =  new  Button();<br />myButton.label  =  "I‘m  a  button!";<br />//一旦 button 组件创建完毕就要通知应用程序并对布局进行处理<br />myButton.addEventListener  (FlexEvent.CREATION_COMPLETE,<br />buttonCreationCompleteHandler);<br />//  将  Button 实例添加到  DisplayList<br />addChild  (myButton);<br />}<br />private  function  buttonCreationCompleteHandler<br />(  evt:FlexEvent  ):void<br />{<br />//  将按钮居中显示<br />myButton.x  =  parent.width/2  -  myButton.width/2;<br />myButton.y  =  parent.height/2  -  myButton.height/2;<br />}<br />]]＞ <br />＜/mx:Script＞ <br />＜/mx:Application＞</font>
		</p>
		<p>
				<font size="2">当你通过 ActionScript 来创建一个 Flex 组件时，你必须导入这个组件的类。你还<br />必须使用 addChild()方法将组件添加到程序的 DisplayList 中来使其可见。通过比 较这两个等价的例子的长度和复杂性，你可以发现这种简单的，基于标签的，而且 具有声明式语法的 MXML 是如何使你避免编写很多行 ActionScript 代码来布局组件 的。</font>
		</p>
		<p>
				<font size="2">运行结果图示：</font>
		</p>
		<p align="center">
				<font size="2">
						<img src="http://www.webjx.com/upfiles/20060922/20060922105524_2.png" />
				</font>
		</p>
		<p>
				<font size="2">译注：由于文档中无法嵌入 SWF 文件，代码运行结果请查看原文中相应的部分。</font>
		</p>
		<p>
				<font size="2">注意：这个例子展示了如何在 Script 标签中编写 ActionScript，这是在 Flex 程序 中包含 ActionScript 代码的一种可行的方法。其它的方法是将 script 代码块分离 到外部 ActionScript 文件中或者使用外部的 ActionScript 类。</font>
		</p>
<img src ="http://www.blogjava.net/sl2cj/aggbug/73948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-09 09:06 <a href="http://www.blogjava.net/sl2cj/articles/73948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何利用 google 查找 Flex 程序</title><link>http://www.blogjava.net/sl2cj/articles/73939.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Mon, 09 Oct 2006 00:54:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/73939.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/73939.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/73939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/73939.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/73939.html</trackback:ping><description><![CDATA[
		<span class="smalltxt">
				<span class="bold">如何利用 google 查找 Flex 程序</span>
		</span>
		<br />
		<br />
		<div style="FONT-SIZE: 12px">网上有很多人提供了很多的 Flex 2 制作的程序，并且提供源代码供人查看，但是基本上都是在个人的博客中发表，查找起来很累，基本上是漫无目的溜。其实利用 google 可以很容易查找到各种源代码。<br />方法：源代码分为 mxml 和 as，而 mxml 文件中肯定包含 &lt;mx:Application xmlns:mx="<font size="-1">http://www.macromedia.com/2006/mxml"&gt; 这句话，因此，只要在搜索框中搜索“mx Application 2006 filetype:mxml”，所有的 Flex 2 代码一览无余。如果要搜 as 文件的话，搜索 "import mx filetype:as"，这个却容易找到一些 as2 的文件，美中不足...<br />大家去试试吧。<br /></font></div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/73939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-09 08:54 <a href="http://www.blogjava.net/sl2cj/articles/73939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Runtime Errors</title><link>http://www.blogjava.net/sl2cj/articles/44131.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 30 Apr 2006 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/44131.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/44131.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/44131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/44131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/44131.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Runtime ErrorsDetailed description of runtime error codes. Content TBD.                        CodeMessageDescription                            1000            The system is out of ...&nbsp;&nbsp;<a href='http://www.blogjava.net/sl2cj/articles/44131.html'>阅读全文</a><img src ="http://www.blogjava.net/sl2cj/aggbug/44131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-30 10:07 <a href="http://www.blogjava.net/sl2cj/articles/44131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Builder:resources:keyboard shortcuts </title><link>http://www.blogjava.net/sl2cj/articles/44130.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 30 Apr 2006 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/44130.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/44130.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/44130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/44130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/44130.html</trackback:ping><description><![CDATA[<h1 class="firstHeading">Flex Builder:resources:keyboard shortcuts </h1>
<h3 id="siteSub">From Adobe Labs </h3>
<div id="contentSub">&nbsp;</div>
<!-- start content --><a name="Keyboard_Shortcuts"></a>
<h2>Keyboard Shortcuts</h2>
<p>This page contains a list of useful Keyboard shortcuts available within Flex Builder. </p>
<p>You can get a complete list within Flex Builder by pressing CTRL-SHIFT-L. </p>
<table>
    <tbody>
        <tr>
            <td>CTRL-LEFT_ARROW</td>
            <td>Beginning of line </td>
        </tr>
        <tr>
            <td>CTRL-D</td>
            <td>Delete Current Line </td>
        </tr>
        <tr>
            <td>Ctrl-Shift - T</td>
            <td>Open Class Browser </td>
        </tr>
        <tr>
            <td>Ctrl-j</td>
            <td>Incremental search (forward) </td>
        </tr>
        <tr>
            <td>Ctrl-J</td>
            <td>Incremental search (backward) </td>
        </tr>
        <tr>
            <td>Alt-Up Arrow</td>
            <td>Move line up </td>
        </tr>
        <tr>
            <td>Alt-Down Arrow</td>
            <td>Move line down </td>
        </tr>
        <tr>
            <td>Ctrl-F6</td>
            <td>Cycle through editors </td>
        </tr>
        <tr>
            <td>Ctrl-Shift - F6</td>
            <td>Cycle through editors backwards </td>
        </tr>
        <tr>
            <td>Ctrl-Up Arrow</td>
            <td>Scroll up </td>
        </tr>
        <tr>
            <td>Ctrl-Down Arrow</td>
            <td>Scroll down </td>
        </tr>
        <tr>
            <td>Ctrl-f</td>
            <td>Find </td>
        </tr>
        <tr>
            <td>Ctrl-Shift - Enter</td>
            <td>Insert blank line above </td>
        </tr>
        <tr>
            <td>Ctrl-Enter</td>
            <td>Insert blank line below </td>
        </tr>
        <tr>
            <td>Ctrl-Alt - Up Arrow</td>
            <td>Copy line up </td>
        </tr>
        <tr>
            <td>Ctrl-Alt - Down Arrow</td>
            <td>Copy line down </td>
        </tr>
        <tr>
            <td>Alt-/</td>
            <td>Word completion </td>
        </tr>
        <tr>
            <td>Ctrl-Delete</td>
            <td>Delete next word </td>
        </tr>
        <tr>
            <td>Ctrl-Backspace</td>
            <td>Delete previous word </td>
        </tr>
        <tr>
            <td>Ctrl-Shift - Delete</td>
            <td>Delete to end of line </td>
        </tr>
        <tr>
            <td>Ctrl-l</td>
            <td>Go to line </td>
        </tr>
        <tr>
            <td>Ctrl-Shift - l</td>
            <td>Open keyboard shortcuts </td>
        </tr>
    </tbody>
</table>
<!-- Saved in parser cache with key labswiki:pcache:idhash:981-1!1!0!1!0!1!0!!en and timestamp 20060430002508 -->
<div class="printfooter">Retrieved from &quot;<a href="http://labs.macromedia.com/wiki/index.php/Flex_Builder:resources:keyboard_shortcuts">http://labs.macromedia.com/wiki/index.php/Flex_Builder:resources:keyboard_shortcuts</a>&quot;<br /><br />不知道为什么,很喜欢快捷键!!哈~~~~</div>
<!-- end content --><img src ="http://www.blogjava.net/sl2cj/aggbug/44130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-30 09:58 <a href="http://www.blogjava.net/sl2cj/articles/44130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FlexBuilder 2.0 速学教程(3):创建基于约束的布局</title><link>http://www.blogjava.net/sl2cj/articles/44037.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 29 Apr 2006 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/44037.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/44037.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/44037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/44037.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/44037.html</trackback:ping><description><![CDATA[这个速学教程教你该如何在Flex&nbsp;Builder中创建基于约束的布局。<br /><br />一个基于约束的布局确保当在用户重设置应用程序窗口大小时，应用程序中的组件会聪明地自我调节大小。<br /><br /><strong><font size="3">開始之前</font></strong><br />開始這個速学教程之前，確定你完成下面的任務:<br /><br />■在Flex&nbsp;Builder中<a href="http://www.cnflash.org/guohaifeng/blogview.asp?logID=253" target="_blank"><strong><font color="#006f93">創建QuickStart項目</font></strong></a>。<br />■在Flex&nbsp;Builder中打開<strong>Project菜單</strong>中確認<strong>Build&nbsp;Automatically</strong>選項已選上,如下:<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="192" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190018.jpg" width="204" onload="javascript:DrawImage(this);" border="0" /><br /><br /><strong><font size="3">学习在Flex中基于约束的布局</font></strong><br />当用户重设置Flex应用程序窗口大小时,你想组件在你的布局中是聪明地自我调节大小时，<strong>基于约束的布局</strong>就能发挥它的作用。<br /><br />你将使用<strong>Canvas容器</strong>创建<strong>基于约束的布局</strong>。<strong>Canvas容器</strong>使组件的大小与位置更有弹性。它附属你当<strong>Canvas容器</strong>重设置大小时自动伸缩与移动组件的能力。<br /><br />例如，如果当用户将应用程序窗口拖大，你想<strong>TextInput文件本框</strong>的宽度跟着伸长，你能固定文件本框与<strong>Canvas容器</strong>左边与右边的位置，那么文件本框的宽度将被窗口的宽度而设定。<br /><br /><strong><font color="#ff0000">注意：在Flex中，所有的约束是相对于<strong>Canvas容器</strong>边缘设置的。不能相对于其它的控件而设置。。</font></strong><br /><br />現在你明白基本概念後,你能在FlexBuilder中創建一個简单的应用程序与<strong>定义约束的布局</strong>。<br /><br /><strong><font size="3">插入与放置组件</font></strong><br /><br />创建<strong>基于约束的布局</strong>的第一个步骤是在<strong>Canvas容器</strong>中放置组件。在Flex的容器中,只有<strong>Canvas容器</strong>是支持绝对坐标。<br /><br />像<strong>Macromedia&nbsp;Flash</strong>的场景一样,你能拖放与放置组件到<strong>Canvas容器</strong>的任何位置。对于象素点的准确性来说，你能设置x与y轴。<br /><br />在这部分里,将插入与放置组件来组成一个简单的反馈表单。<br /><br />1.打开<strong>QuickStart项目,</strong>选择<strong>File&nbsp;&gt;&nbsp;New&nbsp;&gt;&nbsp;MXML&nbsp;Application</strong>,在<strong>File&nbsp;Name</strong>中输<strong>入Layout.mxml</strong>。<br /><br />2.在<strong>Navigator视图</strong>中右击<strong>Layout.mxml文件</strong>,选择<strong>Application&nbsp;Management&nbsp;&gt;&nbsp;Set&nbsp;As&nbsp;Default&nbsp;Application</strong>,将它指定为<strong>默认被编译的文件</strong>。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="458" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190024.jpg" width="375" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br /><br />3.在设计视图中,从<strong>Components面板</strong>(Window&nbsp;&gt;&nbsp;Show&nbsp;View&nbsp;&gt;&nbsp;Components)中拖放一个<strong>Label</strong>与一个<strong>TextInput控件</strong>到<strong>Canvas容器</strong>里。<br /><br /><img onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" height="387" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190025.jpg" width="201" onload="javascript:DrawImage(this);" border="0" /><br /><br />4.&nbsp;使用鼠标拖动<strong>Label</strong>与<strong>TextInputl控件</strong>肩并肩在<strong>Canvas容器</strong>3&nbsp;分之1下的位置上(其实只要放到<strong>Canvas容器</strong>里就可以,下面会进行具体的调整)。<br /><br />5.在Flex属性面板中,展开<strong>General</strong>与<strong>Layout</strong>属性面板。<br /><br />设置<strong>General</strong>与<strong>Layout</strong>属性的选项出现。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="395" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190026.jpg" width="250" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br /><br />如果你看到的视图与上面的不一样,那请点击视图工具条上<strong>的View&nbsp;As&nbsp;Form按钮</strong>。<br /><br /><img onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" height="93" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190027.jpg" width="250" onload="javascript:DrawImage(this);" border="0" /><br /><br />6.在<strong>Canvas容器</strong>上,选择<strong>Label控件</strong>与在Flex属性面板给<strong>Label</strong>设置以下属性:<br /><strong>■&nbsp;text:&nbsp;Email<br />■&nbsp;x:&nbsp;20<br />■&nbsp;y:&nbsp;60</strong><br /><br />7.&nbsp;在<strong>Canvas容器</strong>上,选择<strong>TextInput控件</strong>与在Flex属性面板给<strong>TextInput</strong>设置以下属性:<br /><strong>■&nbsp;x:&nbsp;90<br />■&nbsp;y:&nbsp;60<br />■&nbsp;width:&nbsp;300</strong><br /><br />8.&nbsp;在工具条上点击<strong>Code按钮</strong>,将视图转为代码视图。<br /><br /><strong>Layout.mxml</strong>文件将包含下面的MXML代码:<br /><br />
<table cellspacing="0" cellpadding="1" width="96%" align="center" border="0">
    <tbody>
        <tr>
            <td><strong>程序代码：</strong></td>
        </tr>
        <tr>
            <td>
            <div class="code">&lt;?xml&nbsp;version=&quot;1.0&quot;&nbsp;encoding=&quot;utf-8&quot;?&gt;<br />&lt;mx:Application&nbsp;xmlns:mx=&quot;<a href="http://www.macromedia.com/2005/mxml" target="_blank"><strong><font color="#006f93">http://www.macromedia.com/2005/mxml</font></strong></a>&quot;<br />xmlns=&quot;*&quot;&gt;<br />&lt;mx:Canvas&nbsp;width=&quot;100%&quot;&nbsp;height=&quot;100%&quot;&gt;<br />&lt;mx:Label&nbsp;x=&quot;20&quot;&nbsp;y=&quot;60&quot;&nbsp;text=&quot;Email&quot;/&gt;<br />&lt;mx:TextInput&nbsp;x=&quot;90&quot;&nbsp;y=&quot;60&quot;&nbsp;width=&quot;300&quot;/&gt;<br />&lt;/mx:Canvas&gt;<br />&lt;/mx:Application&gt;</div>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />9.在<strong>&lt;mx:TextInput&gt;</strong>标签后面输入下面的代码来插入剩下的Flex控件:<br /><br />
<table cellspacing="0" cellpadding="1" width="96%" align="center" border="0">
    <tbody>
        <tr>
            <td><strong>程序代码：</strong></td>
        </tr>
        <tr>
            <td>
            <div class="code">&lt;mx:Label&nbsp;x=&quot;20&quot;&nbsp;y=&quot;90&quot;&nbsp;text=&quot;Comments&quot;/&gt;<br />&lt;mx:TextArea&nbsp;x=&quot;90&quot;&nbsp;y=&quot;90&quot;&nbsp;width=&quot;300&quot;&nbsp;/&gt;<br />&lt;mx:Button&nbsp;x=&quot;330&quot;&nbsp;y=&quot;150&quot;&nbsp;label=&quot;Send&quot;/&gt;</div>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />你能通过工具条上点击<strong>Design按钮</strong>来预览已做好的布局。这个布局将如下图:<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="118" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190028.jpg" width="372" onload="javascript:DrawImage(this);" border="0" /><br /><br />10.保存文件。<br /><br />11.点击工具条上的<strong>Run按钮</strong>。<br /><br />浏览器自动打开并运行你的Flex应用程序。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="118" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190028.jpg" width="372" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br /><br /><font color="#ff0000"><strong>注意:&nbsp;浏览器必须了安装Flash&nbsp;Player&nbsp;8.5，Flex&nbsp;2应用程序才能在浏览器中运行。</strong></font><br /><br />12.拖动应用程序的窗口的边缘,使应用程序的窗口变大或变小。<br />组件仍然保持与窗口的左与上边缘的绝对坐标位置,在重设置应用程序窗口大小时,他们不会伸长与缩小。例如:如果你将窗口缩小,&nbsp;<strong>Button控件</strong>将消失,&nbsp;<strong>TextInput</strong>与<strong>TextArea控件</strong>将被留下一部分。<br /><br />下一个步骤设置对控件有约束性的布局,当用户在重设置应用程序窗口大小时,他们会自动调整大小。<br /><br /><strong><font size="3">定义约束的布局</font></strong><br /><br />给组件在你的布局定位完后,&nbsp;你将<strong>定义约束的布局</strong>,它能使组件跟随应用程序窗口自我调整大小。<br /><br />1.在设计视图,选择<strong>TextInput组件</strong>。<br /><br />2.在Flex属性面板,确定<strong>Layout类别</strong>已被展开。<br /><br /><strong>Layout类别</strong>包含设置固定的选项。<br /><br /><img onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" height="344" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190029.jpg" width="250" onload="javascript:DrawImage(this);" border="0" /><br /><br />3.<strong>定义约束的布局</strong>,在<strong>Layout类别</strong>中点击左边与右边的<strong>固定选框</strong>,并在左边文本框输入<strong>90</strong>,右边文文本框输入<strong>60</strong>。这是<strong>TextInput控件</strong>与<strong>Canvas容器</strong>的左边与右边保持的距离,如下:<br /><br /><img onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" height="346" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190030.jpg" width="251" onload="javascript:DrawImage(this);" border="0" /><br /><br />这两个固定选框,&nbsp;跟随窗口固定<strong>TextInput控件</strong>的左右两边。在文本框中输入的数字是指定<strong>TextInput控件</strong>与<strong>Canvas容器</strong>保持的距离有多远(<strong>单位:像素(pixels)</strong>)。<br /><br />这些约束在MXML代码里被表示如下：<br /><br />
<table cellspacing="0" cellpadding="1" width="96%" align="center" border="0">
    <tbody>
        <tr>
            <td><strong>程序代码：</strong></td>
        </tr>
        <tr>
            <td>
            <div class="code">&lt;mx:TextInput&nbsp;y=&quot;60&quot;&gt;<br />&lt;mx:layoutConstraints&gt;<br />&lt;mx:EdgeAnchor&nbsp;left=&quot;90&quot;&nbsp;right=&quot;60&quot;/&gt;<br />&lt;/mx:layoutConstraints&gt;<br />&lt;/mx:TextInput&gt;</div>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />4.在<strong>Canvas容器</strong>中选择<strong>TextArea控件</strong>,在Flex属性面板中,选择所有的四个<strong>固定选框</strong>并输入与边缘保持的距离,如下:<br /><strong>■&nbsp;left:&nbsp;90<br />■&nbsp;right:&nbsp;60<br />■&nbsp;top:&nbsp;90<br />■&nbsp;bottom:&nbsp;190</strong><br /><br /><strong>TextArea</strong>的Flex属性面板如下:<br /><br /><img onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" height="343" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190031.jpg" width="250" onload="javascript:DrawImage(this);" border="0" /><br /><br />5.在<strong>Canvas容器</strong>中选择<strong>TextArea控件</strong>,在Flex属性面板中,选上右边与下边的<strong>固定选框</strong>,并在右边文本框输入<strong>60</strong>,下边文本框输入<strong>150</strong>。<br /><br /><img onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" height="344" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190032.jpg" width="250" onload="javascript:DrawImage(this);" border="0" /><br /><br />6.保存文件,等待Flex&nbsp;Builder直到编译完成应用程序,再点击工具条上的<strong>Run按钮</strong>。<br /><br />浏览器自动打开并运行你的Flex应用程序。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="346" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190033.jpg" width="400" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br /><br />7.拖动应用程序的窗口的边缘,使应用程序的窗口变大或变小。<br />例如,&nbsp;如果你将应用程序的窗口缩小,&nbsp;<strong>Button控件</strong>会向内移动,&nbsp;<strong>TextInput</strong>与<strong>TextArea控件</strong>将会跟随缩小。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="384" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190034.jpg" width="394" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br /><br />如果你将应用程序的窗口拖长,&nbsp;<strong>Button控件</strong>会向外移动,&nbsp;<strong>TextInput</strong>与<strong>TextArea控件</strong>将会跟随拖长。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="244" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190035.jpg" width="400" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br /><br />这个速学教程中,已教会你该如何在Flex&nbsp;Builder中创建<strong>基于约束的布局</strong>。<br /><img src ="http://www.blogjava.net/sl2cj/aggbug/44037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-29 16:55 <a href="http://www.blogjava.net/sl2cj/articles/44037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FlexBuilder 2.0 速学教程(2):编译应用程序</title><link>http://www.blogjava.net/sl2cj/articles/44034.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 29 Apr 2006 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/44034.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/44034.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/44034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/44034.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/44034.html</trackback:ping><description><![CDATA[这个速学教程教你该如何在Flex&nbsp;Builder中編譯與運行Flex应用程序。<br /><br /><strong><font size="3">開始之前</font></strong><br /><br />開始這個速学教程之前，確定你完成下面的任務:<br /><br />■在Flex&nbsp;Builder中<a href="http://www.cnflash.org/guohaifeng/blogview.asp?logID=253" target="_blank"><strong><font color="#006f93">創建QuickStart項目</font></strong></a>。<br />■在Flex&nbsp;Builder中打開Project菜單中確認<strong>Build&nbsp;Automatically</strong>選項已選上,如下:<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="192" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190018.jpg" width="204" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br /><br />這個選項在Flex&nbsp;Builder的standalone版本中是默認選上的。(-_-!!但不知為什麽我的沒有被默認選上)<br /><br /><strong><font size="3">學習在Flex&nbsp;Builder中編譯</font></strong><br /><br />在你用Flex&nbsp;Builder編譯之前，先說一些核心概念。<br /><br />默認地,&nbsp;Flex&nbsp;Builder的standalone版本中當你添加文件到項目中或當你編輯後保存項目文件,&nbsp;Flex&nbsp;Builder會動創建应用程序。<br /><br />編譯後,&nbsp;Flex&nbsp;Builder會將調試與發布的SWF文件放到默認的輸出文件夾<strong>bin文件夾</strong>中。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="258" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190019.jpg" width="202" onload="javascript:DrawImage(this);" border="0" /><br /><br />Flex&nbsp;Builder並會産生運行在瀏覽器中包裝SWF的HTML文件。<br /><br /><strong><font color="#ff0000">注意:&nbsp;瀏覽器必須了安裝Flash&nbsp;Player&nbsp;8.5，Flex&nbsp;2应用程序才能在瀏覽器中運行。</font></strong><br /><br />當你創建一個新的項目時,&nbsp;Flex&nbsp;Builder自動地産生項目的配置文件,&nbsp;<strong>bin文件夾</strong>與<strong>主应用程序文件</strong>。在一個項目中可以有一個以上的应用程序文件,但只能有一個指定的主应用程序文件。<br />你隨時可以指定其他文件為主应用程序文件。所有的应用程序文件必須保存在Flex項目的根目錄下。<br /><br />現在你明白基本概念後,你能在FlexBuilder中創建一個小的应用程序與編譯並運行他。<br /><br /><strong><font size="3">編譯與運行应用程序</font></strong><br /><br />當<strong>Build&nbsp;Automatically</strong>已選上了,你在Flex&nbsp;Builder中添加文件到項目中或當你編輯後保存項目文件,&nbsp;Flex&nbsp;Builder會動編譯你的应用程序。<br /><br />這部分假設你已<a href="http://www.cnflash.org/guohaifeng/blogview.asp?logID=253" target="_blank"><strong><font color="#006f93">創建了QuickStart項目</font></strong></a>與<strong>Build&nbsp;Automatically</strong>已選上了。<br /><br />1.打開Flex&nbsp;Builder差雙擊<strong>QuickStart.mxm</strong>l文件。<br /><br />2.在工具條上點擊<strong>Code按鈕</strong>,將視圖轉為代碼視圖。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="91" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190020.jpg" width="144" onload="javascript:DrawImage(this);" border="0" /><br /><br />當你創建<strong>QuickStart.mxml</strong>文件時,&nbsp;Flex&nbsp;Builder自動插入下面的代碼:<br /><br />
<table cellspacing="0" cellpadding="1" width="96%" align="center" border="0">
    <tbody>
        <tr>
            <td><strong>程序代码：</strong></td>
        </tr>
        <tr>
            <td>
            <div class="code">&lt;?xml&nbsp;version=&quot;1.0&quot;&nbsp;encoding=&quot;utf-8&quot;?&gt;<br />&lt;mx:Application&nbsp;xmlns:mx=&quot;<a href="http://www.macromedia.com/2005/mxml" target="_blank"><strong><font color="#006f93">http://www.macromedia.com/2005/mxml</font></strong></a>&quot;<br />xmlns=&quot;*&quot;&gt;<br />&lt;mx:Canvas&nbsp;width=&quot;100%&quot;&nbsp;height=&quot;100%&quot;&gt;<br />&lt;/mx:Canvas&gt;<br />&lt;/mx:Application&gt;</div>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />3.在<strong>&lt;mx:Canvas&gt;</strong>與<strong>&lt;/mx:Canvas&gt;</strong>標簽中輸入下面的代碼:<br /><br />
<table cellspacing="0" cellpadding="1" width="96%" align="center" border="0">
    <tbody>
        <tr>
            <td><strong>程序代码：</strong></td>
        </tr>
        <tr>
            <td>
            <div class="code">&lt;mx:Label&nbsp;text=&quot;Welcome&nbsp;to&nbsp;Flex!&quot;&nbsp;mouseDownEffect=&quot;WipeRight&quot;&nbsp;x=&quot;20&quot;<br />y=&quot;20&quot;&nbsp;/&gt;</div>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />這個標簽插入一個<strong>Label控件</strong>到<strong>Canvas容器</strong>中,並設定了<strong>Labe控件l</strong>在<strong>Canvas容器</strong>中的位置與事件。<br /><br /><font color="#ff0000"><strong>貼士:你能在工具條上點擊Design按鈕預覽這個控件。</strong></font><br /><br />4.保存文件。<br /><br />當你保存時,Flex&nbsp;Builder自動創建应用程序。你能看到在窗口的右下角看到創建的進度。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="50" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190021.jpg" width="242" onload="javascript:DrawImage(this);" border="0" /><br /><br />5.完成創建後,在工具條上點擊<strong>Run按鈕</strong>啟動应用程序。<br /><br /><img onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" height="72" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190022.jpg" width="76" onload="javascript:DrawImage(this);" border="0" /><br /><br />瀏覽器自動打開並運行应用程序<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="92" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190023.jpg" width="135" onload="javascript:DrawImage(this);" border="0" /><br /><br /><font color="#ff0000"><strong>注意:&nbsp;浏览器必須了安裝Flash&nbsp;Player&nbsp;8.5，Flex&nbsp;2应用程序才能在浏览器中运行。</strong></font><br /><br />6.单击<strong>&ldquo;Welcome&nbsp;to&nbsp;Flex!&rdquo;</strong>文字看看他的效果。<img src ="http://www.blogjava.net/sl2cj/aggbug/44034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-29 16:49 <a href="http://www.blogjava.net/sl2cj/articles/44034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FlexBuilder 2.0 速学教程(1):</title><link>http://www.blogjava.net/sl2cj/articles/44033.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 29 Apr 2006 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/44033.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/44033.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/44033.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/44033.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/44033.html</trackback:ping><description><![CDATA[这个速学教程向你介绍项目在Macromedia&nbsp;Flex&nbsp;Builder&nbsp;2中的概念和教你该如何创建项目。在Flex&nbsp;Builder中，全部Flex应用程序都被包含在项目里面。<br /><br />在Flex&nbsp;Builder中创建Flex应用程序之前,必须创建项目。当你在Flex&nbsp;Builder中创建项目，一个主应用程序文件会跟隨被创建。你能增加另外的资源。如:自定義MXML组件文件，ActionScript文件，以及其他的资源来组成你的Flex应用程序。<br /><br />1.启动Flex&nbsp;Builder，从主菜单中选择<strong>File&nbsp;&gt;&nbsp;New&nbsp;&gt;&nbsp;Flex&nbsp;Project</strong>。<br />新Flex项目向导出现。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="215" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190015.jpg" width="400" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br />创建项目將會透过向导的步骤来指导你。<br /><br />2.因为你将会不用使用Flex服务器,选择<strong>No</strong>选项并点击<strong>Next</strong>。<br />下一个屏幕要求你指定项目的名字和文件储存的位置。<br /><br />3.在<strong>Project&nbsp;Name</strong>中输入<strong>QuickStart</strong>。<br />这个是项目的名称，当你创建一个新的项目后，Flex&nbsp;Builder会产生一个以你的项目名称为基础的Flex主应用程序文件<br /><br />4.在<strong>Project&nbsp;Location</strong>中，确定路径为:<br /><strong>X盤:\Documents&nbsp;and&nbsp;Settings\your_user_name\My&nbsp;Documents\Flex\QuickStart</strong><br />Flex&nbsp;Builder将会为你产生这一个文件夹。<br />作为新项目的默认位置是我的文档文件夹中的Flex文件夹。<br /><br />5.确定<strong>Main&nbsp;Application&nbsp;File</strong>指定为<strong>QuickStart.mxml</strong>。<br />当编译时这个选项决定项目中的那个MXML为主应用程序文件。<br /><br />6.确定<strong>Output&nbsp;Folder</strong>指定为<strong>bin</strong>。<br />这个选项决定,&nbsp;Flex&nbsp;Builder将会把你编译的Flex应用程序放置在那里(SWF文件与HTML文件).默认时，Flex&nbsp;Builder将放置编译后的SWF文件到项目的bin文件夹中。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="209" alt="" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190016.jpg" width="400" onload="javascript:DrawImage(this);" border="0" pop="按此在新窗口打开图片" /><br /><br />7.点击<strong>Finish</strong>。<br />Flex&nbsp;Builder创建一个新的项目与显示它在Navigator视图中。<br /><br /><img onmouseover="this.style.cursor='hand';" style="CURSOR: hand" onclick="window.open(this.src);" height="118" alt="按此在新窗口打开图片" src="http://www.cnflash.org/guohaifeng/attachments/200510/200510190017.jpg" width="203" onload="javascript:DrawImage(this);" border="0" /><br /><br />Flex项目向导自动地产生项目文件，输出文件夹(bin),&nbsp;Flex&nbsp;Builder将会把你编译的Flex应用程序放置在那里。还有主应用程序文件(QuickStart.mxml)。<img src ="http://www.blogjava.net/sl2cj/aggbug/44033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-29 16:48 <a href="http://www.blogjava.net/sl2cj/articles/44033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转帖】一个典型的Flex应用程序开发步骤</title><link>http://www.blogjava.net/sl2cj/articles/44000.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 29 Apr 2006 05:43:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/44000.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/44000.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/44000.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/44000.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/44000.html</trackback:ping><description><![CDATA[<div id="post_message_4683" style="OVERFLOW-X: hidden">一个典型的Flex应用程序开发可以遵循下面的步骤：<br /><font color="#999966">1</font> : 使用编辑器或可视化工具创建包含根标记的一个MXML文件；<br /><font color="#999966">2</font> : 添加一个或多个容器；<br /><font color="#999966">3</font> : 添加对容器的控制，如输入框、按钮和输出框；<br /><font color="#999966">4</font> : 定义数据模型；<br /><font color="#999966">5</font> : 添加WebService，HTTPService或请求远程Java对象操作；<br /><font color="#999966">6</font> : 添加对数据字段的验证；<br /><font color="#999966">7</font> : 添加脚本扩展组件；<br /><font color="#999966">8</font> : 还有一个步骤怎么都跑不掉：调试</div><img src ="http://www.blogjava.net/sl2cj/aggbug/44000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-29 13:43 <a href="http://www.blogjava.net/sl2cj/articles/44000.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转帖】Flex2 发现之旅：Flex2新的实时创建组件实例方法</title><link>http://www.blogjava.net/sl2cj/articles/43999.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 29 Apr 2006 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/43999.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/43999.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/43999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/43999.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/43999.html</trackback:ping><description><![CDATA[<div id="post_message_5820" style="OVERFLOW-X: hidden">在Flex1.5中，如果我们要实时创建一个组件实例的话，可以使用createChild()方法。<br />例如，假定以下代码在MyApp.mxml中：<br />&lt;mx:Script&gt; <br />import mx.controls.Button; <br />var stopButton:Button; <br /><br />function someEventHandler():Void <br />{ <br />stopButton = Button(form1.createChild(Button, undefined, { label: &quot;Stop!&quot; })); <br />} <br />&lt;/mx:Script&gt;<br />以上唯一的方法同时完成下面四件事情：<br />创建特定类（Button）的一个实例（stopButton）。 <br />使用&ldquo;initObj（{ label: &quot;Stop!&quot; }）&rdquo;设置该新实例的属性（label)。 <br />将新创建的实例附加到一个父容器（form1）中。 <br />为了与其他兄弟实例区分开，将该实例的_name属性设置为唯一类似__Button17的字符串值。 <br />实际上，在内部,createChild()调用的是MovieClip类的attachMovie()方法来完成实例的创建。<br /><br />而在Flex2中，类似createChild()这样的方法将不再必须也不是恰当的方法，因为在Flash Player 8.5中，可以像创建其他对象一样使用new操作来创建可视对象，并且，当一个可视对象实例创建后，其是没有父组件的，我们可以将其添加到父容器中，也可以在随后将其移除并添加到其他的父容器中（是的，Flash终于支持re-parenting），或者，我们可以将其移除以让其被垃圾回收器回收。<br />新的动态实时创建实例的方法如下：<br />import mx.controls.Button; <br />var stopButton:Button; <br />function someEventHandler():Void <br />{ <br />stopButton = new Button(); <br />stopButton.label = &quot;Stop!&quot;; <br />stopButton.setStyle(&quot;color&quot;, 0xFF0000); <br />form1.addChild(stopButton); <br />}<br />以上使用了更多行的代码，但是他更加的清晰而易于理解：<br />使用new操作符创建一个新的实例。 <br />使用普通的赋值语句和setStyle()方法设置该新实例的属性和样式。 <br />显式调用addChild()方法将该新的实例添加到父组件中。 <br />注意：其他的API，如：destroyChild()、destroyChildAt()及destroyAllChildren()方法以及被移除，替代他们的是：removeChild()、 removeChildAt()和removeAllChildren()方法。<br />最后，请记住以下Flex2中组件创建的周期：<br />创建（new） - add添加（add） - 移除（remove） - ( 添加 - 移除 - ... ) - 被垃圾收集<br />原文地址：<a href="http://labs.macromedia.com/wiki/index.php/Flex_Framework:tutorials:runtime_components" target="_blank"><font color="#0000ff"><u>Creating Component Instances at Runtime</u></font></a><br />另外，今天才知道，原来Flash Player 8.5的开发代号叫：Zaphod<br />PS:Firefox的查看选中部分源代码的功能真是方便，IE有的学哦...:)</div><img src ="http://www.blogjava.net/sl2cj/aggbug/43999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-29 13:41 <a href="http://www.blogjava.net/sl2cj/articles/43999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转帖】Flex精华摘要 5：使用AS脚本</title><link>http://www.blogjava.net/sl2cj/articles/43998.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 29 Apr 2006 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/43998.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/43998.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/43998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/43998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/43998.html</trackback:ping><description><![CDATA[<div id="post_message_8604" style="OVERFLOW-X: hidden">在MXML文件中实现ActionScript逻辑的几种方法：<br />最简单的方法，在一个MXML文件中通过组件的事件直接书写简单的逻辑控制，但是并不推荐。<br /><br />&lt;mx:Application xmlns:mx='http://www.macromedia.com/2003/mxml'&gt;<br /><br />&lt;mx:Panel title='My Application' &gt;<br /><br />&lt;mx:HBox&gt;<br /><br />&lt;mx:Label text='Temperature in Farenheit:'/&gt;<br /><br />&lt;mx:TextInput id='farenheit' width='120'/&gt;<br /><br />&lt;mx:Button label='Convert' click='celsius.text=(farenheit.text-32)/1.8;' /&gt;<br /><br />&lt;mx:Label text='Temperature in Celsius:'/&gt;<br /><br />&lt;mx:Label id='celsius' width='120' fontSize='48'/&gt;<br /><br />&lt;/mx:HBox&gt;<br />&lt;/mx:Panel&gt;<br />&lt;/mx:Application&gt; <br /><br />第二种，在MXML文件中定义函数调用，比较适合简单的应用，如<br /><br />&lt;mx:Application xmlns:mx='http://www.macromedia.com/2003/mxml'&gt;<br /><br />&lt;mx:Script&gt;<br /><br />&lt;![CDATA[<br /><br />function calculate() { <br /><br />celsius.text=(farenheit.text-32)/1.8;<br /><br />}<br /><br />]]&gt;<br /><br />&lt;/mx:Script&gt;<br /><br />&lt;mx:Panel title='My Application' &gt;<br />&lt;mx:HBox&gt;<br />&lt;mx:Label text='Temperature in Farenheit:'/&gt;<br />&lt;mx:TextInput id='farenheit' width='120'/&gt;<br />&lt;mx:Button label='Convert' click='calculate();' /&gt;<br />&lt;mx:Label text='Temperature in Celsius:'/&gt;<br />&lt;mx:Label id='celsius' width='120' fontSize='48'/&gt;<br />&lt;/mx:HBox&gt;<br />&lt;/mx:Panel&gt;<br />&lt;/mx:Application&gt; <br /><br />第三种，把MXML文件和脚本文件分开，便于项目管理<br /><br />&lt;mx:Application xmlns:mx='http://www.macromedia.com/2003/mxml'&gt;<br /><br />&lt;!-- Specify the ActionScript file containing the function. --&gt;<br /><br />&lt;mx:Script source='sample3script.as'/&gt;<br /><br />&lt;mx:Panel title='My Application' &gt;<br /><br />&lt;mx:HBox&gt;<br /><br />&lt;mx:Label text='Temperature in Farenheit:'/&gt;<br /><br />&lt;mx:TextInput id='farenheit' width='120'/&gt;<br /><br />&lt;mx:Button label='Convert' click='calculate();' /&gt;<br /><br />&lt;mx:Label text='Temperature in Celsius:'/&gt;<br />&lt;mx:Label id='celsius' width='120' fontSize='48'/&gt;<br />&lt;/mx:HBox&gt;<br />&lt;/mx:Panel&gt;<br />&lt;/mx:Application&gt; <br /><br />sample.as文件代码如下：<br />function calculate() { <br />celsius.text=(farenheit.text-32)/1.8;<br />} <br /><br />第四种，使用MXML组件方式，更好的封装实现。下面的例子定义了一个tempConverter组件<br /><br />&lt;mx:Application xmlns:mx='http://www.macromedia.com/2003/mxml'<br /><br />initialize='converter.setupListener()'&gt;<br /><br />&lt;local:TempConverter id='converter' xmlns:local='*'/&gt;<br /><br />&lt;mx:Panel title='My Application' &gt;<br /><br />&lt;mx:HBox&gt;<br /><br />&lt;mx:Label text='Temperature in Farenheit:' /&gt;<br /><br />&lt;mx:TextInput id='farenheit' width='120' /&gt;<br /><br />&lt;mx:Button id='myButton' label='Convert' /&gt;<br /><br />&lt;mx:Label text='Temperature in Celsius:' /&gt;<br />&lt;mx:Label id='celsius' width='120' fontSize='24' /&gt;<br />&lt;/mx:HBox&gt;<br />&lt;/mx:Panel&gt;<br />&lt;/mx:Application&gt; <br /><br />TempConverter.as文件代码如下：<br /><br />class TempConverter implements mx.core.MXMLObject{ <br /><br />public var view;<br /><br />function initialized(doc : Object, id : String) : Void { <br /><br />view = doc;<br /><br />}<br /><br />function setupListener() : Void { <br /><br />view.myButton.addEventListener('click', this);<br /><br />}<br /><br />function click(event) { <br />view.celsius.text=(view.farenheit.text-32)/1.8;<br />}<br />}</div><img src ="http://www.blogjava.net/sl2cj/aggbug/43998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-29 13:40 <a href="http://www.blogjava.net/sl2cj/articles/43998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转帖】Flex精华摘要 4：Flex基本语法</title><link>http://www.blogjava.net/sl2cj/articles/43996.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 29 Apr 2006 05:39:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/43996.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/43996.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/43996.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/43996.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/43996.html</trackback:ping><description><![CDATA[<div id="post_message_8603" style="OVERFLOW-X: hidden">绝大多数MXML标识符合AS2.0规范，MXML文件编译产生的SWF文件包含相应的AS对象。<br />AS2.0是一种面向对象的语言，符合ECMAScript第4版规范。<br />MXML文件的命名规范：<br />1 : 必须符合AS的命名规范，以字母或下划线开头；<br />2 : 不得使用AS的类名、组件ID标识和命名空间的MXML标识作为文件名；<br />3 : 文件名必须用小写的.mxml作为后缀名。<br />在MXML文件中，组件的属性使用和AS类相同的命名约定，以小写字母开头，每个单词的开头字母大写。你可以有两种方式设置属性的值：使用标记的属性或者子节点标记。Macromedia推荐使用标记的属性来设置一般组件属性，复杂的组件属性用子节点来完成。MXML的组件属性包含如下：<br />标量属性（包括数字及字符串）<br />如：<br />&lt;Label width='50' height='25' text='Hello World'/&gt; <br />注意：属性的值不能包含@符号<br />数组属性<br /><br />&lt;mx:List&gt;<br /><br />&lt;mx:dataProvider&gt;<br /><br />&lt;mx:Array&gt;<br /><br />&lt;mx:Number&gt;94062&lt;/mx:Number&gt;<br /><br />&lt;mx:Number&gt;14850&lt;/mx:Number&gt;<br /><br />&lt;mx:Number&gt;53402&lt;/mx:Number&gt;<br /><br />&lt;/mx:Array&gt;<br /><br />&lt;/mx:dataProvider&gt;<br /><br />&lt;/mx:List&gt; <br /><br />脚本对象<br />因为脚本对象比较复杂，所以一般使用子节点的方式来设置属性的值，如：<br />&lt;mynamespace:MyComponent&gt;<br />&lt;mynamespace:nameOfProperty&gt;<br />&lt;objectType prop1='val1' prop2='val2'/&gt;<br />&lt;/mynamespace:nameOfProperty&gt;<br />&lt;/mynamespace:MyComponent&gt; <br /><br />脚本对象数组<br />&lt;mynamespace:MyComponent&gt;<br />&lt;mynamespace:dataProvider&gt;<br />&lt;mx:Array&gt;<br />&lt;mynamespace:ListItem label='One' data='1'/&gt;<br />&lt;mynamespace:ListItem label='Two' data='2'/&gt;<br />&lt;/mx:Array&gt;<br />&lt;/mynamespace:dataProvider&gt;<br />&lt;/mynamespace:MyComponent&gt; <br /><br />XML数据<br /><br />&lt;mynamespace:MyComponent&gt;<br /><br />&lt;mynamespace:value xmlns:a='http://www.example.com/myschema'&gt;<br /><br />&lt;mx:XML&gt;<br /><br />&lt;a:purchaseorder&gt;<br /><br />&lt;a:billingaddress&gt;<br /><br />...<br /><br />&lt;/a:billingaddress&gt;<br /><br />...<br /><br />&lt;/a:purchaseorder&gt;<br />&lt;/mx:XML&gt;<br />&lt;/mynamespace:value&gt;<br />&lt;/mynamespace:MyComponent&gt; <br /><br />样式属性<br />主要进行组件的样式控制，如<br />&lt;mx:TextArea id='myText' text='hello world' fontFamily='Tahoma'/&gt;<br />//和下面的AS代码是等效的<br />myText.text= 'hello world';<br />myText.setStyle('fontFamily', 'Tahoma'); <br /><br />编译标记<br />编译标记并不直接对应AS类或其属性，主要有：<br /><br />&lt;mx:Binding&gt;<br /><br />&lt;mx:Effect&gt;<br /><br />&lt;mx:Model&gt;<br /><br />&lt;mx:Script&gt;<br /><br />&lt;mx:Style&gt;<br /><br />&lt;mx:Metadata&gt;<br /><br />&lt;mx:operation&gt;<br /><br />&lt;mx:request&gt;<br /><br />&lt;mx:method&gt;<br />&lt;mx:arguments&gt; <br />注意编译标记的大小写<br />其它注意事项<br />01 : id属性并不是每个MXML标记必须的；<br />02 : MXML的根标记不支持id属性；<br />03 : 布尔属性的值只允许true或false；<br />04 : 标记必须同时包含source和destination属性，并且不能包含id属性；<br />05 : 标记的field属性是必须的，并且不能包含id属性；<br />06 : 标记必须包含wsdl或者serviceName属性，并且不能同时使用；<br />07 : 标记必须包含source或者named属性，并且不能同时使用；<br />08 : 标记必须包含url或者serviceName属性，并且不能同时使用；<br />09 : 标记必须包含name属性，并且不能包含id属性；<br />10 : 标记必须包含name属性，并且不能包含id属性。</div><img src ="http://www.blogjava.net/sl2cj/aggbug/43996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-29 13:39 <a href="http://www.blogjava.net/sl2cj/articles/43996.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>迎接RIA时代的来临</title><link>http://www.blogjava.net/sl2cj/articles/43826.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Fri, 28 Apr 2006 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/43826.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/43826.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/43826.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/43826.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/43826.html</trackback:ping><description><![CDATA[前 言

      看了几篇关于“回归C/S”的文章，作为一名多年开发B/S的程序员，不免热血沸腾，深受鼓舞！曾经，我是B/S结构的忠实拥护者，同时也为了所谓的“零部署”陷入过技术泥潭。正当为B/S烦愁的时候，RIA走进了我的视线… …

      什么是RIA

      Internet已经日益成为应用程序开发的默认平台。用户对应用程序复杂性要求日增，但现在的Web应用程序对完成复杂应用方面却始终跟不上步伐。用户与今天中等复杂程度的Web应用程序交互时，其体验并不能令人满意。Web模型是基于页面的模型，缺少客户端智能机制。而且，它几乎无法完成复杂的用户交互（如传统的C/S应用程序和桌面应用程序中的用户交互）。这样的技术使得Web应用程序难以使用，支持成本高，并且在很多方面无法发挥效应。

      为了提高用户体验，出现了一种新类型的Internet应用程序。那就是Rich Internet Applications（RIA）。这些应用程序结合了桌面应用程序的反应快、交互性强的优点与Web应用程序的传播范围广及容易传播的特性。RIA简化并改进了Web应用程序的用户交互。这样，用户开发的应用程序可以提供更丰富、更具有交互性和响应性的用户体验。
 

                  基于主机模式→C/S模式→B/S模式→RIA模式
      
      我们的行业经历了几次系统架构方面的重要转变，在此过程中，客户端的表现功能有起有落。上图介绍了每个阶段的计算功能所带来的应用程序体验方面的变化，这一过程从大型机开始，到RIA的出现为止。

      随着各企业组织认识到RIA模型可产生显著的商业利润、提高生产率及降低成本的优势后，这种模型的发展势头越来越猛烈。这些应用程序结合了桌面应用程序的反应快、交互性强的优点与Web应用程序的传播范围广及容易传播的特性。系统架构发展的下一步是RIA，它最大程度地提高了广泛性和丰富性。

      论传统B/S之不足

      过程复杂性
      过程复杂性是由于需要表达一个多步骤或多选项任务或互动作用所引起的。在HTML里，一个多步骤的任务可以在单页内表达出来。但是由于HTML的互动性有限，便可能产生一份很长的页面，使用户感到混乱、笨拙而难以使用。为了避免这种难以忍受的用户体验，便需将任务在表面上看来“自然”的部分处区分成多个步骤，甚至需多个网页共同完成。这种以网页为主的用户界面通常需要反复翻转网页，以解决在顺序步骤中有牵连性的改变。其结果是缓慢、不自然、混乱而且令人感到懊恼的用户体验。
    
      配置复杂性
      许多Web应用程序允许用户配置自己所要的定制产品——可以是皮包或是计算机，甚至是汽车等产品。但是配置产品是一项很困难的过程，因为在向用户展示所有有效的产品选项组合时，应用程序必须能够表达出有关的复杂性，尤其是当用户可以从数十、数百或数千选项中定制出一个产品时。表达这些复杂性包括指出所需条件、有效和无效组合、一些导致问题的元素以及它们的适当解决方法；为每一项个人选择提供费用信息以及费用总计（一旦有所更改）；还有最重要的是容许用户观看最后结果。这些是传统Web应用程序相当难以表现的。

      规模复杂性
      今天，网站内的搜索工具大多是文本性质，间中夹着一些锦上添花的图像。当用户输入他或她的数码照相机准则，有可能是价格、以像素等，网站便接着回复数页符合准则的产品，而大部分都是说明文本。反之，另一种方法则是使用视觉化来简化搜索空间（也就是提供立即和动态的视觉反馈）。在一个视觉化选择照相机的网站，其搜索过程可能如下：网站从一个包含所有照相机种类图像的单屏幕开始。当用户通过复选框、游标或数据输入域来选择筛选准则时，所有不符合准则的照相机图像将被删除，只余下符合准则的照相机可在屏幕上看到。因此，在把选择聚焦至符合准则的数部照相机的过程中，用户可经历一个截然不同，而且和现实生活中的购物经验更相似的体验。

      反馈复杂性
      高度互动性的应用程序如游戏，能使反馈变得复杂，也即是指用户行动和快速移动或情节不断改变的屏幕元素之间的反馈环路。传统的HTML页面一向来都可以说是无法表达这类复杂性。它所需要的是拥有高度互动性和局部智能型的客户端应用程序，以便可以在无需刷新全页或干扰与服务器之间的通信的情况下，响应用户的输入和改变它们的状态或界面。放弃如今依赖服务器的客户机将使用户体验更吸引，同时也解决了反馈复杂性的问题。Web应用程序必须拥有表达复杂性的能力，以容许用户视看复杂的数据、配置多选项的产品、搜索大型数据集以及容许用户与数据之间的互动交换。

      真正的RIA

    为了解决如今的问题，理想中的Web应用程序应该能够：
1、 利用无处不在的客户机
2、 在多种硬件平台上毫无更改的操作互联网
3、 无论低或高带宽的连接都可毫无妨碍的执行
4、 将处理能力复原给客户（而不仅是提供能力而已）
5、 提供吸引人的高度互动的用户界面
6、 表达过程、数据配置、规模和反馈复杂性
7、 无缝的利用声音、视像、图像和文本
8、 容许用户在线和离线工作以支持移动工作流程
9、 容许客户自行决定要在何时存取何种内容和数据（异步内容检索）
10、 存取多种中间层服务（.NET或Java）和后端数据存储
11、 采用新崛起的标准如XML和SOAP，为演进中的Web Service为主的网络提供动态高效的前端应用
12、 与遗旧的应用程序和系统集成
13、 容许在现有Web应用程序和环境内逐步添加新功能以充分利用现有网络应用投资
 

                                 结 构
      RIA本身有能力提供这类Web应用解决方案。如上图，RIA将桌面型计算机软件应用的最佳用户界面功能性与Web应用程序的普遍采纳和低成本部署以及互动多媒体通信的长处集于一体，终于成就了一种可以提供更直观、响应性和有效的用户体验应用程序。它所具备的桌面型计算机长处包括了在确认和格式编排方面提供互动用户界面；在无刷新页面之下提供快捷的界面响应时间；提供通用的用户界面特性如拖放式(drag and drop)以及在线和离线操作能力。Web网的长处如立即部署、跨越平台可用性、采用逐步下载来检索内容和数据、拥有杂志式布局的网页以及充分利用被广泛采纳的互联网标准。通信的长处则包括双向互动声音和图像。

      客户机在RIA内的作用不仅是展示页面，它可以在幕后与用户请求异步地进行计算、递送和检索数据、重新画出屏幕的一部分和密切综合使用声音和图像，这一切都可以在不依靠客户机连接的服务器或后端的情况下进行。

      RIA提供一个强劲的技术平台，使客户机的能力复原到差不多与桌面型计算机软件应用或传统的C/S系统中的客户机能力相似。它适合传统的N层开发过程，同时也能够和遗旧的环境集成以延展现有的应用程序而无需进行修改。它也可以作为基础网络服务的互动表现层，允许用户在线和离线工作。RIA有能力解决各种复杂性，使需要复杂性的应用得以开发并且减少开发成本，同时在很多时候这类应用之所以能够成形主要是拜RIA所赐。

      RIA方案—基于Flash的Flex

      Flex简介
      Macromedia公司被公认为新兴的RIA市场的领导者。今天98%的浏览器上都使用Macromedia Flash客户端软件，因此几乎每个人都可以使用基于Flash的RIA。Macromedia Flex是Macromedia的新服务器产品，它使企业应用程序开发人员能够全面访问RIA的功能。Flex具有基于标准的架构，与当前企业开发人员的工具、方法和设计模式互补。

      Flex应用程序与传统的HTML应用程序的主要区别在于Flex应用程序处理最适合在客户端运行，如字段校验、数据格式、分类、过滤、工具提示、合成视频、行为及效果等。Flex 可使开发人员更好地交付应用程序，这种应用程序使用户可以迅速反应、在不同状态与显示间流畅过渡，并提供毫无中断的连续的工作流。
 

                              Flex 应用程序框架
如上图所示，Flex应用程序框架由MXML、ActionScript 2.0及Flex类库构成。开发人员利用 MXML及ActionScript 2.0编写Flex应用程序。利用MXML定义应用程序用户界面元素，利用ActionScript 2.0定义客户逻辑与程序控制。Flex类库中包括Flex组件、管理器及行为等。利用基于Flex 组件的开发模型，开发人员可在程序中加入预建的组件、创建新组件或是将预建的组件加入复合组件中。

      这里重点介绍一下MXML。与HTML一样，都是标记语言，它描述了反映内容与功能的用户界面。与HTML不同的是，MXML 可对表示层逻辑与用户界面和服务器端数据绑定提供声明抽象。MXML可将表示与业务逻辑的问题彻底分开，以实现最大程度地提高开发人员的生产率及应用程序的重复使用率。

      Flex的不足
      目前Macromedia最新推出了Flex 1.0 Updater，但它代号为“Brady”的IDE还没有正式推出，目前还在进行Beta 3测试。抛开IDE不说，笔者认为Flex目前还很不成熟，还不利于在实际项目中使用。

例如，Flex自带的ZipCodeValidator，里面只提供了美国和加拿大的邮编规则，没有其他选择，也无法个性化它。看来只有自己来定义Validator了，但这样一来，和在JS中写正则表达式有什么区别（代码量和JS差不多）？用户需要的是国际化的ZipCodeValidator，这样才能提高工作效率。

      一句话概括
      现在的Flex才是1.0版本，很多地方都不完善，只好自定义才能完成特定的要求。期待着Brady以及Flex后续版本的推出！

RIA方案—基于JS的Bindows

      Bindows简介
      “Bindows把javascript发挥到了第九层！”——网友这样评价Bindows。


 
                         运行中的Bindows
    
      的确如此，Erik等编写这个框架已经将javascript的OOP和基于IE6的DHTML发挥到极点！Bindows 0.93发布的时候已经将IE内置的功能开发得淋漓尽致了，包括Filter、XMLHTTP、Web Service、VML。javascript用于客户端界面的显示和处理，XMLHTTP用于客户端与服务器的信息传输。javascript在客户端的表现力不容置疑，看看www.bindows.net所表示出来的能力，利用javascript几乎可以实现Windows应用程序所能干的大部分事情，XMLHTTP一直以来常被用于实现“无刷新”的Web页面，它和javascript配合，可以完成数据从服务器和客户端的传输。
    
      Bindows的不足
      Erik喜欢那种一次全部载入的方式来实现脚本库，使用过Bindows会发现，在窗口的加载期，需要一个漫长的等待过程，甚至浏览器的进程会产生无响应的情况。按照V0.93，脚本文件的大小是600多K，在一个普通的Web应用中，我们更多时候不会用到Bindows的全部功能，这点Bindows根本没有遵循“用多少去多少”的准则。另外，过多的JS会使CPU占用率陡然增加，产生潜在问题。

      内部大量利用了IE6的技术，没有考虑到非微软平台的浏览器，限制了Bindows的流行。在图表方面，大量采用了VML技术，在IE5，IE5.5这两个版本，VML引擎不是那么的成熟，很多地方的显示不够流畅，会受到带宽和硬件的限制，过分绚丽的图形最终会给用户带来崩溃。“图形方面我是采用VML的，当初太偏执，如果使用SVG来实现可能好许多的，也就是那段日子，我花了非常多的时间去折腾web方面开发。”——有网友这样说。

      一句话概括
      在技术的角度上，从Bindows是可以学到不少东西的，但好像它的学术价值大于它的商业价值。

      后 记

      兴奋归兴奋，冷静下来仔细想想，运用RIA改造现有B/S模式还为时尚早。制约我们的首先是网络环境和硬件环境的不完善性，我想没有哪个用户愿意花大量的时间来等待想要看见的“花哨”页面，更不愿意等来的东西使自己的机器不堪重负，而换来的只是一些良好体验吧？市场决定一切，而不是任何的新技术！其次，目前RIA的解决方案也不成熟，笔者看好Flex，可惜还需要长时间的等待才有结果。当然，还有很多RIA的方案，感觉MS的Smart Client + Web Service来头不小。

      本文叫“迎接RIA时代的来临”，笔者充满了对RIA的美好憧憬，期待着有一天能够在RIA的环境中进行虚拟现实的交互式体验！
      Are you ready? Let’s go!


鸣 谢：RIA中国 没有他们，我想今天也不会对RIA有如此的认识！！！

参考文献
Flex 白皮书
IDC--RIA白皮书
回归C/S?解释Bindows
迎接Client/Server模式的回归
Flex: RIA 的先驱，无坚不摧的银弹？
Return of Rich Client

<img src ="http://www.blogjava.net/sl2cj/aggbug/43826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-04-28 16:19 <a href="http://www.blogjava.net/sl2cj/articles/43826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>