﻿<?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-文章分类-RIA</title><link>http://www.blogjava.net/yczz/category/26441.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 14 Dec 2007 17:11:44 GMT</lastBuildDate><pubDate>Fri, 14 Dec 2007 17:11:44 GMT</pubDate><ttl>60</ttl><item><title>配置支持Amfphp1.9的Web应用</title><link>http://www.blogjava.net/yczz/articles/167747.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Fri, 14 Dec 2007 05:13:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/167747.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/167747.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/167747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/167747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/167747.html</trackback:ping><description><![CDATA[<p><strong>新功能：</strong><br />
&nbsp;1、AMF3支持：包含了RemoteObject，你可以尽情用在Flex2上。<br />
&nbsp;2、JSON(Javascrīpt Object Notation,轻量级的数据交换格式)支持：附加到gateway.php，现在json.php将使你更好的在Flash中使用自己的JSON服务。这里有两个例子：MochiKit 和 Spry。XML-RPC 同样被支持。<br />
&nbsp;3、一个新的浏览器。值得一提的是例程MochiTest同样是可以使用在JSON模式的例程。所以你可以自己证实它的确可以同时运行在AMP和JSON模式下。<br />
&nbsp;4、$this-&gt;methodTable的最后。 从现在开始是可以被忽略的。所有的Methods都可以间接的使用默认值。</p>
<p>安装Amfphp 1.9 beta 2 </p>
<p class="paragraph">目前amfphp1.9的最新版是amfphp1.9 beta2，可以到 <a href="http://www.5etdemi.com/uploads/amfphp-1.9.beta.20070126.zip">http://www.5etdemi.com/uploads/amfphp-1.9.beta.20070126.zip</a>下载。将其解压缩到硬盘，拷贝到apache的web目录下。键入<a href="http://localhost:8080/amfphp/gateway.php">http://localhost:8080/amfphp/gateway.php</a>，会出现amfphp网关的一个说明文件。AMFPHP基本的安装已经完成。</p>
<p class="paragraph">四、安装AMF扩展</p>
<p class="paragraph">最新版的AMFPHP加入了一个AMF扩展：它是用C写了一个AMF协议的解码和编码器，执行效率大大提升。尤其是大的数据源的时候，用php编码可能会超时而不能完成的操作，用AMF扩展就可以完成。 安装比较简易：</p>
<p class="paragraph">1. 下载</p>
<p class="paragraph">到<a href="http://www.teslacore.it/projects/amfext/amfext-0.8.7a-bin.zip">http://www.teslacore.it/projects/amfext/amfext-0.8.7a-bin.zip</a>下载，将php_amf.dll解压缩到PHP根路径下\ext中。</p>
<p class="paragraph">2. 配置</p>
<p class="paragraph">打开php.ini，加上下面这一行：<font color="#993300">extension=php_amf.dll</font></p>
<p class="paragraph">我们不需要对AMFPHP 本身做任何修改或者配置。系统会自动监测那个扩展是否存在，存在就会自动应用，否则就会使用PHP的解码和编码。</p>
<p class="paragraph">好了，将其web共享，别名为flashservices。支持Amfphp的Web应用就配置好了。我们只需要将写好远程服务类放到Amfphp根目录\services中就可以在Flash和Flex中访问了。</p>
<p class="paragraph">五、本地化设置</p>
<p class="paragraph">因为PHP默认的编码语言是ISO-8859-1，要使前面配置的Web应用支持简体中文，最好的方法是打开Amfphp根路径下的gateway.php，将 <font color="#993300">$gateway-&gt;setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");</font>修改为<font color="#993300">$gateway-&gt;setCharsetHandler("iconv", "GBK", "GBK");</font>即可。要解决MySQL中的中文乱码问题，请用<font color="#993300">mysql_query("set names 'gbk'");</font>。</p>
<img src ="http://www.blogjava.net/yczz/aggbug/167747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-12-14 13:13 <a href="http://www.blogjava.net/yczz/articles/167747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AS3连接AMFPHP1.9 HELLOWORLD</title><link>http://www.blogjava.net/yczz/articles/167604.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Thu, 13 Dec 2007 13:52:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/167604.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/167604.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/167604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/167604.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/167604.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;随着adobe的FLEX和ROMTING的开源化又引起一场的RIA风波，我作为传统的WEB开发人员被其深深的吸引，作为web开发人员很关注flash如何和后台连接，在网上苦苦寻找终于发现了，在AS3下如何和后台通信，其实FLASH ROMTING 和JAVA DWR设计很相似都是通过中间来转化后台和前台对象，今天我就以一个金典的HELLOWORLD程序来展现这个框架。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先到<a href="http://www.amfphp.org/" target="_blank">http://www.amfphp.org</a>下載AMFPHP1.9，这是目前的最新版本支持AMF3，不像以前的版本1.9版本的部署非常简单解压缩后直接拷贝到apache配置的web下面我这里是D:\develop\WebDev\web\amfphp，然后可以测试一下安装是否成功在地址栏中输入<a href="http://localhost:8080/amfphp/gateway.php">http://localhost:8080/amfphp/gateway.php</a>如果看到第一行amfphp and this gateway are installed correctly. You may now connect to this gateway from Flash。说明安装成功可以进行下一步了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后写后台PHP代码：Hello.php文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class Hello{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function sayHello(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return "Hello World";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;后台代码很简单，用过1.0版本的人可能发现这里没有方法表了（我觉得这个改进使得业务方法和框架解耦了是个非常好的改进），为了简单这里不讲私有gateway.php配置直接调用公有的gateway.php,将Hello.php移动到amfphp\services下面，这样服务器端就完成了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面是客户端的编写:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无意中在网上发现了一个很好封装flash.net.Responder， flash.net.NetConnection 这两个类的代码这里公布给大家一起学习一下<br />
<br />
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img id="_0_28_Open_Image" onclick="this.style.display='none'; document.getElementById('_0_28_Open_Text').style.display='none'; document.getElementById('_0_28_Closed_Image').style.display='inline'; document.getElementById('_0_28_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_0_28_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_0_28_Closed_Text').style.display='none'; document.getElementById('_0_28_Open_Image').style.display='inline'; document.getElementById('_0_28_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="_0_28_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_0_28_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />Remoting类<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />负责FLASH与数据库交互<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="_53_1023_Open_Image" onclick="this.style.display='none'; document.getElementById('_53_1023_Open_Text').style.display='none'; document.getElementById('_53_1023_Closed_Image').style.display='inline'; document.getElementById('_53_1023_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_53_1023_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_53_1023_Closed_Text').style.display='none'; document.getElementById('_53_1023_Open_Image').style.display='inline'; document.getElementById('_53_1023_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />package&nbsp;</span><span id="_53_1023_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;flash.net.Responder;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;flash.net.NetConnection;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="_163_1021_Open_Image" onclick="this.style.display='none'; document.getElementById('_163_1021_Open_Text').style.display='none'; document.getElementById('_163_1021_Closed_Image').style.display='inline'; document.getElementById('_163_1021_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_163_1021_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_163_1021_Closed_Text').style.display='none'; document.getElementById('_163_1021_Open_Image').style.display='inline'; document.getElementById('_163_1021_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;Remoting&nbsp;extends&nbsp;NetConnection&nbsp;</span><span id="_163_1021_Open_Text"><span style="color: #000000">{<br />
<img id="_167_240_Open_Image" onclick="this.style.display='none'; document.getElementById('_167_240_Open_Text').style.display='none'; document.getElementById('_167_240_Closed_Image').style.display='inline'; document.getElementById('_167_240_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_167_240_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_167_240_Closed_Text').style.display='none'; document.getElementById('_167_240_Open_Image').style.display='inline'; document.getElementById('_167_240_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_167_240_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_167_240_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构造<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@param&nbsp;gatewayURL&nbsp;remoting网关地址<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@param&nbsp;amfType&nbsp;使用AMF3或AMF0<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="_301_378_Open_Image" onclick="this.style.display='none'; document.getElementById('_301_378_Open_Text').style.display='none'; document.getElementById('_301_378_Closed_Image').style.display='inline'; document.getElementById('_301_378_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_301_378_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_301_378_Closed_Text').style.display='none'; document.getElementById('_301_378_Open_Image').style.display='inline'; document.getElementById('_301_378_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Remoting(gatewayURL:String,amfType:uint)&nbsp;</span><span id="_301_378_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super();<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.objectEncoding</span><span style="color: #000000">=</span><span style="color: #000000">amfType;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.connect(gatewayURL);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">##########################################################################</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">方法</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">##########################################################################</span><span style="color: #008000"><br />
<img id="_557_667_Open_Image" onclick="this.style.display='none'; document.getElementById('_557_667_Open_Text').style.display='none'; document.getElementById('_557_667_Closed_Image').style.display='inline'; document.getElementById('_557_667_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_557_667_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_557_667_Closed_Text').style.display='none'; document.getElementById('_557_667_Open_Image').style.display='inline'; document.getElementById('_557_667_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_557_667_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_557_667_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;远程返回函数<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;remoteMethod:远程类.方法名param远程方法所需要的参数onResultFun:返回数据所调用的方法句柄.onFaultFun同理.<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="_758_1018_Open_Image" onclick="this.style.display='none'; document.getElementById('_758_1018_Open_Text').style.display='none'; document.getElementById('_758_1018_Closed_Image').style.display='inline'; document.getElementById('_758_1018_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_758_1018_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_758_1018_Closed_Text').style.display='none'; document.getElementById('_758_1018_Open_Image').style.display='inline'; document.getElementById('_758_1018_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;respond(remoteMethod:String,onResultFun:</span><span style="color: #000000">*</span><span style="color: #000000">,onFaultFun:</span><span style="color: #000000">*</span><span style="color: #000000">,...&nbsp;param):</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;</span><span id="_758_1018_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parameters:Array</span><span style="color: #000000">=</span><span style="color: #000000">param;<br />
<img id="_816_935_Open_Image" onclick="this.style.display='none'; document.getElementById('_816_935_Open_Text').style.display='none'; document.getElementById('_816_935_Closed_Image').style.display='inline'; document.getElementById('_816_935_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_816_935_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_816_935_Closed_Text').style.display='none'; document.getElementById('_816_935_Open_Image').style.display='inline'; document.getElementById('_816_935_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(param.length&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span id="_816_935_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters.unshift(remoteMethod,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Responder(onResultFun,onFaultFun));<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.call.apply(</span><span style="color: #0000ff">this</span><span style="color: #000000">,parameters);<br />
<img id="_942_1014_Open_Image" onclick="this.style.display='none'; document.getElementById('_942_1014_Open_Text').style.display='none'; document.getElementById('_942_1014_Closed_Image').style.display='inline'; document.getElementById('_942_1014_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_942_1014_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_942_1014_Closed_Text').style.display='none'; document.getElementById('_942_1014_Open_Image').style.display='inline'; document.getElementById('_942_1014_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="_942_1014_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.call(remoteMethod,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Responder(onResultFun,onFaultFun));<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
</div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p>然后在任何地方可以调用它：<br />
</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;remote:Remoting;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />remote</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Remoting(</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost/remotinggame/gateway.aspx</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />remote.respond(remoting方法名,onRuslt,onFault,参数1，参数2....);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img id="_175_207_Open_Image" onclick="this.style.display='none'; document.getElementById('_175_207_Open_Text').style.display='none'; document.getElementById('_175_207_Closed_Image').style.display='inline'; document.getElementById('_175_207_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_175_207_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_175_207_Closed_Text').style.display='none'; document.getElementById('_175_207_Open_Image').style.display='inline'; document.getElementById('_175_207_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;onRuslt(re:</span><span style="color: #000000">*</span><span style="color: #000000">):</span><span style="color: #0000ff">void</span><span id="_175_207_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;onRuslt:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">re);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="_239_278_Open_Image" onclick="this.style.display='none'; document.getElementById('_239_278_Open_Text').style.display='none'; document.getElementById('_239_278_Closed_Image').style.display='inline'; document.getElementById('_239_278_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_239_278_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_239_278_Closed_Text').style.display='none'; document.getElementById('_239_278_Open_Image').style.display='inline'; document.getElementById('_239_278_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;onFault(fe:</span><span style="color: #000000">*</span><span style="color: #000000">):</span><span style="color: #0000ff">void</span><span id="_239_278_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;onFault:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">fe.code);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
</div>
<br />
下面用上面封装的类来实现HELLOWORLD<br />
<div><img id="_28_633_Open_Image" onclick="this.style.display='none'; document.getElementById('_28_633_Open_Text').style.display='none'; document.getElementById('_28_633_Closed_Image').style.display='inline'; document.getElementById('_28_633_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_28_633_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_28_633_Closed_Text').style.display='none'; document.getElementById('_28_633_Open_Image').style.display='inline'; document.getElementById('_28_633_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #000000">package&nbsp;</span><span id="_28_633_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;flash.display.Sprite;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="_133_631_Open_Image" onclick="this.style.display='none'; document.getElementById('_133_631_Open_Text').style.display='none'; document.getElementById('_133_631_Closed_Image').style.display='inline'; document.getElementById('_133_631_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_133_631_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_133_631_Closed_Text').style.display='none'; document.getElementById('_133_631_Open_Image').style.display='inline'; document.getElementById('_133_631_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;Hello&nbsp;extends&nbsp;Sprite</span><span id="_133_631_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;remoting:Remoting;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="_202_217_Open_Image" onclick="this.style.display='none'; document.getElementById('_202_217_Open_Text').style.display='none'; document.getElementById('_202_217_Closed_Image').style.display='inline'; document.getElementById('_202_217_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_202_217_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_202_217_Closed_Text').style.display='none'; document.getElementById('_202_217_Open_Image').style.display='inline'; document.getElementById('_202_217_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Hello&nbsp;()</span><span id="_202_217_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init();<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="_252_417_Open_Image" onclick="this.style.display='none'; document.getElementById('_252_417_Open_Text').style.display='none'; document.getElementById('_252_417_Closed_Image').style.display='inline'; document.getElementById('_252_417_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_252_417_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_252_417_Closed_Text').style.display='none'; document.getElementById('_252_417_Open_Image').style.display='inline'; document.getElementById('_252_417_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;init():</span><span style="color: #0000ff">void</span><span id="_252_417_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remoting</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Remoting(</span><span style="color: #000000">"</span><span style="color: #000000"><a href='http://localhost:8080/amfphp/gateway.php",3'>http://localhost:8080/amfphp/gateway.php</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">3</a></span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remoting.respond(</span><span style="color: #000000">"</span><span style="color: #000000">Hello.sayHello</span><span style="color: #000000">"</span><span style="color: #000000">,onGetData_Ruslt,onGetData_Fault);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="_467_514_Open_Image" onclick="this.style.display='none'; document.getElementById('_467_514_Open_Text').style.display='none'; document.getElementById('_467_514_Closed_Image').style.display='inline'; document.getElementById('_467_514_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_467_514_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_467_514_Closed_Text').style.display='none'; document.getElementById('_467_514_Open_Image').style.display='inline'; document.getElementById('_467_514_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;onGetData_Ruslt(re:</span><span style="color: #000000">*</span><span style="color: #000000">):</span><span style="color: #0000ff">void</span><span id="_467_514_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(re</span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="_561_628_Open_Image" onclick="this.style.display='none'; document.getElementById('_561_628_Open_Text').style.display='none'; document.getElementById('_561_628_Closed_Image').style.display='inline'; document.getElementById('_561_628_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_561_628_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_561_628_Closed_Text').style.display='none'; document.getElementById('_561_628_Open_Image').style.display='inline'; document.getElementById('_561_628_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;onGetData_Fault(fe:</span><span style="color: #000000">*</span><span style="color: #000000">):</span><span style="color: #0000ff">void</span><span id="_561_628_Open_Text"><span style="color: #000000">{<br />
<img id="_585_624_Open_Image" onclick="this.style.display='none'; document.getElementById('_585_624_Open_Text').style.display='none'; document.getElementById('_585_624_Closed_Image').style.display='inline'; document.getElementById('_585_624_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_585_624_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_585_624_Closed_Text').style.display='none'; document.getElementById('_585_624_Open_Image').style.display='inline'; document.getElementById('_585_624_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;what&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;fe)</span><span id="_585_624_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(what</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;fe:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">fe[what]);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<br />
<img src ="http://www.blogjava.net/yczz/aggbug/167604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-12-13 21:52 <a href="http://www.blogjava.net/yczz/articles/167604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rich Internet Applications 的技术选项</title><link>http://www.blogjava.net/yczz/articles/162952.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Sun, 25 Nov 2007 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/162952.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/162952.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/162952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/162952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/162952.html</trackback:ping><description><![CDATA[<blockquote>Web 应用程序就要进入下一级别了，Rich Internet Application (RIA) 可以极大地增强用户交互。在本文对 RIA 的概述中，您将学习如何将其应用于用户界面 (UI) 层。Web 开发人员和架构师可能对该领域里当前可用的几种常见技术 —— Laszlo、XUL、XForms、 Macromedia Flex 和 Dojo 的讨论特别感兴趣。本文还包括其他技术的链接。本文假设您相当了解传统的 UI 工具，比如 HTML 和 XML。</blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES-->
<p>Rich Internet Application (RIA) 超出了 HTML 提供的传统用户界面 (UI) 控件的标准有限集合，比如文本框、复选框或单选按钮。RIA 为用户提供了丰富得多的控件集合，以及一种更加高级的服务器交互机制。使用 RIA，当从浏览器提交数据时，用户不必刷新页面；他们可以仅刷新页面的一部分，具有更好的错误处理，等等。</p>
<p>本文内容包括：
<ul>
    <li>RIA 概述
    <li>UI 技术，包括 Laszlo、XUL、XForms、Dojo 和 Macromedia Flex
    <li>工具比较
    <li>其他技术
    <p><a name="overview"><span class="atitle">RIA 概述</span></a></p>
    <p>术语 &#8220;Rich Internet Application&#8221; 已经出现几年了，但该概念还被称为：
    <ul>
        <li>远程脚本
        <li>X Internet
        <li>富 (Web) 客户机
        <li>富 Web 应用程序 </li>
    </ul>
    <p>&nbsp;</p>
    <p>Internet 是信息的巨大来源，许多技术在努力以高级和用户友好的方式改进 Web 上的信息传递和存储性能。在大多数 Web 应用程序中，大量处理发生在服务器端，只有用户交互发生在客户机端。从而使服务器承担了沉重的数据和处理负载，以及网络通信中不断增加的依赖性。</p>
    <p>传统的基于客户机-服务器的架构具有高的灵活性和丰富性，但随着 Web 的成长而日渐消亡。一个原因是缺乏客户机应用程序的一致性和标准化。现在，勿庸置疑，浏览器是已经被人们普遍接受的 Web 工具。但是，它缺乏智能处理。所以责任在于可以交付更丰富的用户体验并能在客户端进行简单处理的客户机应用程序。RIA 提供了设计更好、更快、更吸引人并更无限可用的用户体验的机会 —— 全部在浏览器中实现。</p>
    <p>致力于 Web 和 internet UI 层的开发人员通常在 UI 层上进行试验，尝试可以在最少外部支持下有效工作的各种 RIA 工具。但是，在多数情况下，浏览器需要一些支持以使插件、扩展或下载在浏览器内部无缝工作。</p>
    <p>本文讨论有助于为业务案例确定最佳 RIA 选择的工具和参数。本文不可能讨论 RIA 的所有因素，但我将重点介绍您在评估 RIA 技术时审核的一些重要特性。 </p>
    <p><a name="N100A2"><span class="smalltitle">评估内容</span></a></p>
    <p>评估 RIA 技术时，需要考虑下列因素：</p>
    <dl>
    <dt><strong>UI 丰富性</strong>
    <dd>开发 UI 时有多少基本的、开箱即用的 UI 小部件或控件可以使用？可以如何使用这些控件进行数据绑定和事件绑定？新控件应易于使用，并易于插卸。一些 RIA 技术提供了添加丰富性的简单方法和信息更丰富的可视体验，比如页面中的动画 API。例如，为了确保用户仅点击某个按钮一次，可以将此按钮做成动画以从视图中移出。
    <dt><strong>复杂性</strong>
    <dd>开发人员已经使用现有的基于页面的模型很多年了，因为它简单易用，但是可能很笨重。RIA 技术必须易于使用、构建和扩展。它还应该与现有 Web 技术相互操作。
    <dt><strong>灵活性和组件化</strong>
    <dd>与不同中间件组件协作的灵活性非常重要。协作应该能够容易地组合和扩展，以创建新的自定义小部件。创建自定义小部件之后，就可以在应用程序中重用它们。
    <dt><strong>刷新页面</strong>
    <dd>
    <p>刷新页面的一块而不是整个页面有非常显著的好处，因为它直接依赖于网络流量。刷新一块使得应用程序更快、更可用并使用户具有更好的视觉体验。它还有助于更好地管理错误。</p>
    <p>假设用户在网页上执行一个操作或第一个任务，并且数据在后台提交给服务器。然后用户在同一页面上继续执行另一个任务。同时，来自第一个任务的反馈已经返回并更新同一页面的某个部分。因此，如果这样设计网页，则会使工作和任务更有效率。</p>
    <dt><strong>安全性</strong>
    <dd>采用 RIA 时，确保与传统应用程序相比不会增加安全性威胁。一定要清楚围绕服务器通信或下载在客户机上的浏览器插件和扩展的安全性。
    <dt><strong>对基本 Web 范例的支持</strong>
    <dd>技术应支持当今 Web 应用程序中涉及的基本 Web 范例，比如国际化、用户设备独立、浏览器独立和对上载和下载功能的二进制文件传输支持。甚至技术的成熟度也很重要。
    <dt><strong>工具</strong>
    <dd>检查以集成开发环境 (IDE) 形式可供开发人员使用的工具，以及单元测试和调试支持。工具可以是带有现有编辑器或受支持编辑器的插件。
    <dt><strong>可用性</strong>
    <dd>用户期望浏览器应用程序使用常用的浏览器功能。具体来说，保存图片、Ctrl+F 以搜索页面上的内容以及复制粘贴等功能不能在基于 Flash 的解决方案中工作。以人机交互 <a href="http://www.digital-web.com/topics/hci/">(HCI) 原理设计您的 RIA 可用性</a>。 </dd></dl><br />
    <br />
    <p><a name="code-hd"><span class="atitle">UI 技术</span></a></p>
    <p>本节讨论当前 UI 技术提供的一些不同选项。</p>
    <p><a name="code-hd"><span class="smalltitle">Laszlo</span></a></p>
    <p>Laszlo 是领先的开放源码平台，用于在 Web 中使用 Flash 来开发和交付 RIA。Flash 播放器最初具有一个小插件以在浏览器中运行 Flash 文件。因为其高可靠性和兼容性，它被扩展用于创建闪烁的动画图片。后来的版本合并了一些重要的脚本兼容性、与服务器的数据交换，Flash 6 添加了双向音频和视频通信。</p>
    <p>Laszlo 已经扩展了该丰富性，使用脚本语言来生成 Flash 并交付给浏览器。它提供了一个用于构建 RIA 的开发源码 XML 本地平台。</p>
    <table cellspacing="0" cellpadding="0" width="40%" align="right" border="0">
        <tbody>
            <tr>
                <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
                <td>
                <table cellspacing="0" cellpadding="5" width="100%" border="1">
                    <tbody>
                        <tr>
                            <td bgcolor="#eeeeee"><a name="N100FD"><strong>什么是 XPath？</strong></a><br />
                            XML Path Language 是 W3C 推荐的语言，设计用于寻址 XML 文档中的信息。<a href="http://www.w3.org/TR/xpath#section-Introduction">XPath</a> 的主要目的在于导航 XML 文档中的任何节点和属性。</td>
                        </tr>
                    </tbody>
                </table>
                </td>
            </tr>
        </tbody>
    </table>
    <p>它只需要在任何浏览器上安装 Flash 5.x+。脚本以一种叫做 LZX 的基于 XML 的语言编写。LZX 是一种面向对象的基于标记的语言，使用 XML 和 JavaScript 语法创建动态生成的 Flash 文件。服务器上的 LZX 编译器编译 LZX 文件并将 Flash 发送到浏览器中。实际的数据交换是以 XML 形式进行的，LZX 控件使用 XPath 来表示 XML。事件也很容易与控件绑定。每个控件定义一组可以从父事件继承事件的事件。<a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#listing1">清单 1</a> 中的示例展示了如何使用事件。</p>
    <br />
    <a name="listing1"><strong>清单 1. 示例 simplelaszlo.lzx</strong></a><br />
    <table cellspacing="0" cellpadding="0" width="80%" border="0">
        <tbody>
            <tr>
                <td class="code-outline">
                <pre class="displaycode">                &lt;canvas width="500" height="80"&gt;
                &lt;view&gt;
                &lt;text align="center" valign="middle"&gt;Hello, World!&lt;/text&gt;
                &lt;button &gt;Update
                &lt;method event="onclick"&gt;
                Debug.write("Button pressed");
                &lt;/met&gt;
                &lt;/button&gt;
                &lt;/view&gt;
                &lt;/canvas&gt;</pre>
                </td>
            </tr>
        </tbody>
    </table>
    <br />
    <p>您将发现 Laszlo 易于学习、开发新组件、组件化并与任何 Web 应用程序集成。与其他 RIA 工具相比，它具有丰富的组件库。</p>
    <p>LZX 能够让 HTTP 和 Web 服务使用 SOAP 和 RPC 协议在后台请求服务器，而无需刷新页面。插件已经就绪，可以将任何 Web 应用程序文件与 Laszlo 库集成。当前，基于 Eclipse 的 IDE 可供开发使用。还有一些工具可用于在客户端的 LZX 中进行调试。有趣的是，它们还提供了 Lzunit 框架以用于测试 Laszlo 应用程序。</p>
    <p>最近，Laszlo 宣布了支持使用相同的现有框架将应用程序以 DHTML 交付给浏览器。这使您可以选择配置时希望将应用程序交付为 DHTML 还是 Flash。Laszlo 还扩展了对 Ajax 社区和多个设备交付的支持。</p>
    <p><a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#fig1">图 1</a> 展示了 Laszlo 和 Dojo 的示例。</p>
    <br />
    <a name="fig1"><strong>图 1. 用 Laszlo 和 Dojo 创建的 RIA 图片</strong></a><br />
    <img height="371" alt="Laszlo、Dojo 演示图片" src="http://www.ibm.com/developerworks/cn/web/wa-richiapp/riaimage.jpg" width="572" /> <br />
    <p><a name="code-hd"><span class="smalltitle">XUL</span></a></p>
    <p>XML 用户界面语言 (XUL) 是 Mozilla 的基于 XML 的跨平台语言，用于描述应用程序的用户界面。它提供了可用于页面中的现成组件库。目前，它仅应用于基于 Gecko 的浏览器中，比如 Mozilla Firefox 或 Netscape 6 以上版本。</p>
    <p>XUL 使用基于 XML 的标记语言描述用户界面控件。它提供了各种流行的富 Internet 控件，比如菜单、选项卡、树和弹出菜单。XUL 使用文档对象模型 (DOM) 存储节点树。加载了所有 XUL 文件之后，XUL 将所有标记解析并转换为层次文档结构的节点。然后可以使用此 DOM 结构、DOM 结构的方法以及 XUL 函数提供的其他方法来检查并修改数据。您始终可以从 JavaScript 访问并操作 DOM，并使之像典型的 HTML 控件一样易于处理。每个控件和每个节点都具有多个属性来定义其外观和结构。</p>
    <p>从远程位置访问时，浏览器像处理 HTML 或其他浏览器内容一样处理 XUL 文件。但是，当它们作为扩展而本地安装在其 chrome 系统的浏览器中时，条目将收到访问系统和书签的特殊权限。在这种情况下，它可以执行其他的特权操作。</p>
    <p>Mozilla 浏览器本身也是一组软件包，其中包括 XUL 文件、JavaScript 和样式表，但它是相当大的而且非常复杂的扩展。</p>
    <p>XUL 使用 eXtensible Bindings Language (XBL) 进行绑定。每个控件可以使用 Mozilla 的 XBL 被绑定。XUL 使用 RDF 格式，可用于存储资源。可以使用其他格式的数据，并从中创建 RDF 数据，该数据将绑定到 XUL 格式。</p>
    <p>因为 XUL 类似于 XML 文件，所以可以使用 IDE 的任何文本编辑器或 XML 编辑器。因为相同的底层代码处理所有 XUL 文件、HTML 和 SVG，所以可以使用 CSS 属性设置 XUL 文件的样式。它对定位具有内置支持，因为所有文本内容在浏览器中是保持分离的。</p>
    <p><em>皮肤</em> 在 Mozilla 中由 CSS 文件组成，定义浏览器的用户界面。可以为不同的外观修改和创建皮肤，而无需更改代码。它类似于通过添加功能来扩展浏览器 API 的功能。</p>
    <p>如果在 Mozilla Firefox 中运行 <a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#listing2">清单 2</a> 中的文件，它将呈现一个文本框和按钮。</p>
    <br />
    <a name="listing2"><strong>清单 2. 示例 simplexul.xul</strong></a><br />
    <table cellspacing="0" cellpadding="0" width="80%" border="0">
        <tbody>
            <tr>
                <td class="code-outline">
                <pre class="displaycode">                &lt;?xml version="1.0"?&gt;
                &lt;?xml-stylesheet href="chrome://global/skin/" type="text/css"?&gt;
                &lt;window id="example-window" title="Example 2.4.1"
                xmlns:html="http://www.w3.org/1999/xhtml"
                xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;
                &lt;label control="label" value="Enter some text"/&gt;
                &lt;textbox id="textid"/&gt;
                &lt;button id="yes" label="Yes"/&gt;
                &lt;/window&gt;</pre>
                </td>
            </tr>
        </tbody>
    </table>
    <br />
    <p><a name="code-hd"><span class="smalltitle">XForms</span></a></p>
    <p>XForms 1.0 提供了一种新的用于联机交互的平台独立标记语言。W3C 已经出现了用于实现 XForms 的规范，而且 XForm 被认为是 HTML 形式的继任者。</p>
    <p>XForms 独立于表示设备。无需对传统浏览器、PDA 移动电话、语言浏览器、甚至一些更奇怪的新兴客户机（比如 instant messenger）进行任何更改，就可以传递 XForms。这使得 XForms 成为更吸引 RIA 的工具。</p>
    <p>在 XForms 中，实际数据（XML 表单定义）与表单表示分离。这种设备独立的 XML 表单定义叫做 XForms 模型，可以用于许多标准的或专用的用户界面。</p>
    <p>XForms 用户界面提供了一组标准的可视控件，旨在于替换当今的 XHTML 表单控件。它们可用于 XHTML SVG 或其他组、语言浏览器组中，还可以独立开发 XForms 的用户界面组件。XForms 模型被引用在每个 XForms 控件中以呈现数据。它遵循 XPath 以引用 XML 中的元素。提交数据时，它只能提交已填充的 XML 数据模型。</p>
    <table cellspacing="0" cellpadding="0" width="40%" align="right" border="0">
        <tbody>
            <tr>
                <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
                <td>
                <table cellspacing="0" cellpadding="5" width="100%" border="1">
                    <tbody>
                        <tr>
                            <td bgcolor="#eeeeee"><a name="N1017B"><strong>XML 事件</strong></a><br />
                            <a href="http://www.w3.org/TR/xml-events/">XML 事件</a> 是一种 XML 语言，能够一致地将事件监听器和关联的事件处理程序与 DOM 事件集成。当事件发生时，它被通过文档树路径分配给元素（目标），并可以再次传递回树中。观察者可以响应路径中的事件。</td>
                        </tr>
                    </tbody>
                </table>
                </td>
            </tr>
        </tbody>
    </table>
    <p>XForms 使用 XML 事件来处理事件和动作。XML 事件指定事件、观察者和处理程序。正如 <a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#listing3">清单 3</a> 所示，<code>DOMActivate</code> 是事件，消息元素是处理程序，父触发器是观察者。</p>
    <p>可以将 XForms 与 AJAX 集成。当前，在 <a href="http://www.w3.org/">W3C</a> 中，可以找到 20 多个 XForms 示例实现。许多供应商，其中包括 IBM，已经开发了 XML 的 XForms 引擎（参阅 <a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#resources">参考资料</a> 中的 XML Forms Package）。Mozilla 已经宣布在 Mozilla 运行的所有平台上支持 XForms。要查看 XForms 实现的优秀示例，请参阅 <a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#resources">参考资料</a>。</p>
    <p><a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#listing3">清单 3</a> 展示了一个简单的 XForms 示例，显示了一个用 FormFaces&#8482; 实现呈现的文本框和按钮。</p>
    <br />
    <a name="listing3"><strong>清单 3. 显示用 FormFaces 实现呈现的文本框和按钮的 XForm</strong></a><br />
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
        <tbody>
            <tr>
                <td class="code-outline">
                <pre class="displaycode">                &lt;!DOCTYPE  html PUBLIC "-//W3C//DTD XHTML 1.0//EN"
                "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
                &lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:form=http://www.w3.org/2002/xforms
                xmlns:ev="http://www.w3.org/2001/xml-events"  xml:lang="en"&gt;
                &lt;head&gt;
                &lt;title&gt;Simple example&lt;/title&gt;
                &lt;link rel="stylesheet" type="text/css" href="xforms.css" /&gt;
                &lt;script type="text/javascript" src="../../formfaces.js"&gt;&lt;/script&gt;
                &lt;form:model&gt;
                &lt;form:instance&gt;
                &lt;data xmlns=""&gt;
                &lt;greeting&gt;Hi there!&lt;/greeting&gt;
                &lt;/data&gt;
                &lt;/form:instance&gt;
                &lt;/form:model&gt;
                &lt;/head&gt;
                &lt;body&gt;
                &lt;form:input ref="greeting" incremental="true"&gt;
                &lt;form:label&gt;Greeting:&lt;/form:label&gt;
                &lt;/form:input&gt;
                &lt;form:trigger&gt;
                &lt;form:label&gt;Trigger&lt;/form:label&gt;
                &lt;form:message level="modal" ev:event="DOMActivate"&gt;You clicked
                button&lt;/form:message&gt;
                &lt;/form:trigger&gt;
                &lt;/body&gt;
                &lt;/html&gt;</pre>
                </td>
            </tr>
        </tbody>
    </table>
    <br />
    <p><a name="code-hd"><span class="smalltitle">Dojo</span></a></p>
    <p>Dojo 是用 JavaScrip 编写的开放源码 DHTML 工具包。Dojo Toolkit 提供了一组核心库，和一组丰富的不同的软件包库，每个库提供特定的函数。Dojo 提供较低级的 API 来编写可移植的 JavaScript 并简化复杂的脚本。可以很容易很快地原型化交互小部件和动画转换。它提供了事件系统、I/O 软件包和一般语言增强的库。可以用 Dojo 编写脚本，并根据您的需要包括任意多个可用的 API。</p>
    <p>Dojo 还提供了一组可直接用于任何应用程序中的小部件库。可以使用其中一些核心小部件作为 UI 控件，比如菜单小部件、选项卡集、树小部件等等。还有一般函数，比如布局小部件、日期选择器、SVG 小部件等等。</p>
    <p>Dojo 基于单个标记语言构建，提供了声明和使用响应 DHTML 界面组件的简单方法。<a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#listing4">清单 4</a> 展示了一个简单的 Dojo 组件示例，它是 HTML 页面中一个面向用户的特殊按钮。</p>
    <br />
    <a name="listing4"><strong>清单 4. 示例 dojosample.html</strong></a><br />
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
        <tbody>
            <tr>
                <td class="code-outline">
                <pre class="displaycode">                &lt;button dojoType="Button2" widgetId="helloButton"&gt;Hello World!&lt;/button&gt;
                You need to include the Dojo widgets library that is required in your HTML page.
                &lt;script type="text/javascript"&gt;
                dojo.require("dojo.widget.*");
                dojo.require("dojo.widget.Button2");
                &lt;/script&gt;	</pre>
                </td>
            </tr>
        </tbody>
    </table>
    <br />
    <p>Dojo 工具包还包括一些调试选项。AJAX Toolkit Framework (ATF) 可用作功能强大的 IDE。这是 IBM 的 Emerging technology Toolkit (ETTK) 的一部分，是一组特殊的新兴技术。ATF 主要基于 Eclipse Web 工具项目，允许支持 DOM 浏览、JavaScript 调试等等。</p>
    <p>最近，Dojo Foundation 宣布了与 Laszlo 的合作协议。按照该协议，您可以在 Laszlo 的开放源码项目中使用 Dojo Toolkit。同样，Laszlo 将将库贡献给 Dojo Foundation，从而促进开放源码社区的发展。</p>
    <p><a name="code-hd"><span class="smalltitle">Macromedia Flex</span></a></p>
    <p>Macromedia Flex 是另一种基于 Flash 的用户界面。它提供位于应用服务器顶层的 Flex 表示服务器，并从该服务器动态生成 Flash 文件，然后交付给浏览器。这些 Flash 文件在浏览器的 Flash 播放器内部执行，并允许用户交互、执行操作、甚至生成 SOAP、HTTP 或 AMF 请求以连接回服务器。</p>
    <p>布局和 UI 组件在一种基于 XML 的语言 MXML 中定义。Flex 为可视组件、容器以及远程服务对象和数据模型提供了丰富的 MXML 扩展类。它还与控件进行数据绑定，并访问服务器端数据。</p>
    <p>ECMA 脚本语言 (ActionScript 2) 嵌入在 MXML 中以处理事件、系统事件或构造复杂的数据模型。这是一种面向对象的语言，类似于 JavaScript 和 ECME 脚本。与 XForms 一样，Flex 保持数据模型、数据表示、数据验证器和数据服务分离（类似于 MVC 样式）。</p>
    <p>到达 MXML 的所有请求都通过 Flex 编译器进行处理，该编译器编译 MXML 并生成 SWF，然后将其高速缓存，直到它被修改并最终交付给浏览器为止。</p>
    <p>任何 XML 编辑器都可用于编写 MXML 脚本，但 Macromedia 还提供了一个特殊的 IDE 进行 Flex 应用程序开发，叫做 Flex Builder 1.5。它的优点是与 Flex 服务器集成。它还提供了一些组件，允许连接服务器、执行正常的 HTTP 调用、连接远程 Java&#8482; 对象并从浏览器本身与 Web 服务交互。它可以与现有的 J2EE 和 .NET 应用程序模型集成。</p>
    <p><a href="http://www.ibm.com/developerworks/cn/web/wa-richiapp/index.html#listing5">清单 5</a> 展示了 Macromedia Flex 代码的一个示例。</p>
    <br />
    <a name="listing5"><strong>清单 5. Macromedia Flex 代码示例</strong></a><br />
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
        <tbody>
            <tr>
                <td class="code-outline">
                <pre class="displaycode">                &lt;?xml version="1.0"?&gt;
                &lt;mx:Application xmlns:mx="http://macromedia.com/2003/mxml"&gt;
                &lt;mx:Form label="Employee Information"&gt;
                &lt;mx:FormItem label="First Name"&gt;
                &lt;mx:TextInput id="firstName" /&gt;
                &lt;/mx:FormItem&gt;
                &lt;/mx:FormItem&gt;
                &lt;/mx:Form&gt;
                &lt;!-- The myEmployee data model. --&gt;
                &lt;mx:Model id="myEmployee"&gt;
                &lt;name&gt;
                &lt;first /&gt;
                &lt;last /&gt;
                &lt;/name&gt;
                &lt;department /&gt;
                &lt;email /&gt;
                &lt;/mx:Model&gt;
                mx:Binding source="firstName.text" destination="myEmployee.name.first" /&gt;
                &lt;/mx:Application&gt;	</pre>
                </td>
            </tr>
        </tbody>
    </table>
    <br />
    <p>Macromedia Flex 看起来类似于 Laszlo。二者都是丰富的功能强大的基于 Flash 的应用程序。Laszlo 位于 Flash 引擎外，所以性能可能有所欠缺，但它具有其他优点。</p>
    <br />
    <br />
    <p><a name="compare"><span class="atitle">工具比较</span></a></p>
    <p>下表比较了上文讨论过的五种技术以及 Altiolive（一种丰富的企业应用程序）。</p>
    <br />
    <a name="table1"><strong>表 1. 工具比较</strong></a><br />
    <table class="data-table-1" cellspacing="0" cellpadding="0" width="100%" summary="" border="0">
        <tbody>
            <tr>
                <th>技术</th>
                <th>浏览器技术</th>
                <th>脚本</th>
                <th>丰富性</th>
                <th>亮点</th>
            </tr>
            <tr>
                <td class="tb-row">Laszlo</td>
                <td>Flash、XML</td>
                <td>LZX 文件+JavaScript</td>
                <td>高</td>
                <td>易于学习，丰富</td>
            </tr>
            <tr>
                <td class="tb-row">Mozilla XUL</td>
                <td>XUL 语言</td>
                <td>XUL 文件+JavaScript</td>
                <td>高</td>
                <td>依赖浏览器，功能强大</td>
            </tr>
            <tr>
                <td class="tb-row">XForms</td>
                <td>Xform </td>
                <td>取决于实现</td>
                <td>限于一定程度</td>
                <td>设备中立，遵循 W3C</td>
            </tr>
            <tr>
                <td class="tb-row">Dojo</td>
                <td>JavaScript</td>
                <td>HTML+JavaScript</td>
                <td>限于一定程度</td>
                <td>基于 JavaScript。正在成长，可适应。</td>
            </tr>
            <tr>
                <td class="tb-row">Macromedia Flex</td>
                <td>Flash、XML</td>
                <td>MXML 文件</td>
                <td>高</td>
                <td>非开放源码。Macromedia 的专有工具。</td>
            </tr>
            <tr>
                <td class="tb-row">Altiolive</td>
                <td>Applet、XML</td>
                <td>Java</td>
                <td>限于一定程度</td>
                <td>http://www.altio.com/</td>
            </tr>
        </tbody>
    </table>
    <br />
    <br />
    <br />
    <p><a name="other"><span class="atitle">其他技术</span></a></p>
    <p>我们已经讨论了五种技术，当然还有其他一些技术。许多公司使用各种技术提供了非常特别的 RIA 原型。尽管一一讨论这些技术超出了本文范围，但下面这些技术值得一看：
    <ul>
        <li><a href="http://www.backbase.com/">Backbase</a> —— 开发和销售帮助创建 AJAX 应用程序的软件。
        <li><a href="http://www.netvibes.com/">Netvibes</a> —— 自定义 Web 主页解决方案的免费服务。
        <li><a href="http://www.zimbra.com/">Zimbra</a> —— 下一代企业消息传送和协作的开放源码服务器和客户机技术。
        <li><a href="http://www.protopage.com/v2">Protopage</a> —— 免费个人起始页面。
        <li><a href="http://www.nexaweb.com/">Nexaweb</a> —— 用于绑定和部署 Enterprise Internet Application 的平台。
        <li><a href="http://www.altio.com/">altio</a> —— 浏览器中丰富的企业应用程序。 <br />
        <br />
        </li>
    </ul>
    <p><a name="N102D4"><span class="atitle">结束语</span></a></p>
    <p>本文介绍了 RIA，讨论了当前的 UI 技术，并推荐了其他技术。我希望工具比较将帮助您根据需要作出一个正确的选择。每种技术都有不同的优点，从而基于您的需要为开发人员提供了丰富的控件集合。</p>
    <p>本文讨论的技术为用户带来一些新奇的东西，并提供了更丰富的用户体验。您现在可以跨越浏览器并呈现给 PDA、跨平台的移动设备，并用音频、视频、图像和动画来丰富用户体验。RIA 几乎包含了 XML，因此 XML 无疑是优胜者。</p>
    <p>将来，我预计 RIA 将会在 Web UI 转换到下一级别中扮演重要的角色，并帮助准备支持 Web 2.0。</p>
    </li>
</ul>
<img src ="http://www.blogjava.net/yczz/aggbug/162952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-11-25 11:46 <a href="http://www.blogjava.net/yczz/articles/162952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActionScript 3.0的新特性及新变化</title><link>http://www.blogjava.net/yczz/articles/154734.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Sun, 21 Oct 2007 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/154734.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/154734.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/154734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/154734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/154734.html</trackback:ping><description><![CDATA[本文介绍了ActionScript 3 相对于 ActionScript 2 有哪些新的特性和改动。并在文章的最后一步步的教大家如何利用 Flex Builder 来编译并运行第一个 AS3 程序。
<p>　　<strong>语法方面的增强和改动：</strong></p>
<p>　　引入了 package（包） 和 namespace（命名空间） 两个概念。其中 package 用来管理类定义，防止命名冲突，而 namespace 则用来控制程序属性方法的访问。</p>
<p>　　新增内置类型 int (32比特整数)，uint（非负32比特整数）,用来提速整数运算； </p>
<p>　　新增 * 类型标识，用来标识类型不确定的变量，通常在运行时变量类型无法确定时使用。在 AS2 中这种情况下需要用 Object 赖作为类型表识； </p>
<p>　　新增 is 和 as 两个运算符来进行类型检查。其中 is 代替 AS2 中的 instanceof 来查询类实例的继承关系，而 as 则是用来进行不抛错误的类型转换。 </p>
<p>　　新增 in 运算符来查询某实例的属性或其prototype中是否存在指定名称的属性。 </p>
<p>　　新增 for each 语句来循环操作 Array 及 Object实例。 </p>
<p>　　新增 const 语句来声明常量。 </p>
<p>　　新增 Bound Method 概念。当一个对象的方法被付值给另外一个函数变量时，此函数变量指向的是一个 Bound Method，以保证对象方法的作用域仍然维持在声明此方法的对象上。这相当于 AS2 中的 mx.util.Delegate 类，在 AS3 中这个功能完全内置在语言中，不需要额外写代码。 </p>
<p>　　AS3 的方法声明中允许为参数指定默认值（实现可选参数）。 </p>
<p>　　AS3 中方法如果声明返回值，则必须明确返回。 </p>
<p>　　AS2 中表示方法没有返回值的 Void 标识，在 AS3 中变更为 void。 </p>
<p>　　<strong>OOP方面的增强</strong></p>
<p>　　通过类定义而生成的实例，在 AS3 中是属于 Sealed 类型，即其属性和方法无法在运行时修改。这部分属性在 AS2 中是通过类的 prototype 对象来存储，而在 AS3 中则通过被称为 Trait 的概念对象存储管理，无法通过程序控制。这种处理方式一方面减少了通过 prototype 继承链查找属性方法所耗费的时间（所有父类的实现方法和属性都会被直接复制到对应的子类的 Trait 中），另一方面也减少了内存占用量，因为不用动态的给每一个实例创建 hashtable 来存储变量。如果仍然希望使用 AS2 中类实例在运行时的动态特性，可以将类声明为 dynamic。</p>
<p>　　<strong>API方面的增强</strong></p>
<p>　　新增 Display API，使 AS3 可以控制包括 Shape, Image, TextField, Sprite, MovieClip, Video, SimpleButton, Loader在内的大部分 DisplayList 渲染单位。这其中 Sprite 类可以简单理解为没有时间轴的 MovieClip，适合用来作为组件等不需要时间轴功能的子类的基础。而新版的 MovieClip 也比 AS2 多了对于 Scene（场景）和 Label（桢标签）的程序控制。另外，渲染单位的创建和销毁通过联合 new 操作符以及 addChild/removeChild 等方法实现，类似 attachMovie 的旧方法已被舍弃，同时以后也无须去处理深度值。 </p>
<p>　　新增 DOM Event API，所有 在DisplayList 上的渲染单位都支持全新的三段式事件播放机制，以 Stage 为起点自上而下的播报事件到 target 对象（此过程称为 Capture Phase），然后播报事件给 target 对象（此过程称为 Target Phase），最后在自下而上的播报事件（此过程称为 Bubbling Phase）。 </p>
<p>　　新增内置的 Regular Expressions （正则表达式）支持，使 AS3 能够高效地创建、比较和修改字符串，以及迅速地分析大量文本和数据以搜索、移除和替换文本模式。 </p>
<p>　　新增 ECMAScript for XML (E4X) 支持。 E4X 是 AS3 中内置的 XML 处理语法。在 AS3 中 XML 成为内置类型，而之前的 AS2 版本 XML 的处理 api 转移到 flash.xml.* 包中，以保持向下兼容。 </p>
<p>　　新增 Socket 类，允许读取和写入二进制数据，使通过 AS 来解析底层网络协议（比如 POP3, SMTP, IMAP, NNTP 等）成为可能，使 Flash Player 可以连接邮件服务器和新闻组。 </p>
<img src ="http://www.blogjava.net/yczz/aggbug/154734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-10-21 17:52 <a href="http://www.blogjava.net/yczz/articles/154734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex及AIR开发资源下载（6月12日更新,含FLEX 3 BETA）</title><link>http://www.blogjava.net/yczz/articles/151715.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Wed, 10 Oct 2007 05:43:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/151715.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/151715.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/151715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/151715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/151715.html</trackback:ping><description><![CDATA[本帖整理了FLEX开发和AIR开发所需要的部分软件和资料，希望能对需要这些资源的朋友能有点帮助。<br />
<br />
本贴以后会随者软件的更新而更新，总之，最新的FLEX/AIR开发资源都可以在这里找到。<br />
<br />
说明1:以下各资源收集于官方网站和网友提供，如有侵犯版权，请及时与我们联系<br />
说明2:软件均为WINDOWS版本，如需要其他版本，请去官方下载页面进行选择<br />
说明3:本站不提供破解程序及序列号等讨论，需要的朋友请去搜索引擎搜索<br />
说明4:本地连接有效期不能保证，假如哪位朋友有稳定而能长期开放的FTP空间，又愿意帮助我们的，请给我发站内短信<img src="http://www.riachina.com/editor/images/smilies/smile.gif"  alt="" /><br />
说明5:凡是经过非官方指定的地方下载软件，请自行进行病毒及木马检测<br />
<br />
<strong><font size="3"><br />
客户端</font></strong><br />
<br />
<font size="2"><strong>Flex Builder 2 with Charting</strong></font><br />
官方下载：<a href="http://www.adobe.com/go/tryflex" target="_blank">http://www.adobe.com/go/tryflex</a>&nbsp; （需要有Adobe帐号，登录后选择你需要的版本进行下载）<br />
本地下载：<a href="http://211.155.21.54:83/software/FLXB_2.0_Win_WWE.exe" target="_blank">http://211.155.21.54:83/software/FLXB_2.0_Win_WWE.exe</a><br />
说明：这是FLEX的主要开发工具，一般性FLEX的应用开发，下载这个文件并安装就OK了。一般来说，在Adobe网站上下载的版本是最新的版本，不需要再安装下面的Flex Builder相关补丁的了（本地下载种的版本为Flex Builder 2.01需要再打上hotfix 1,flash cs3的兼容补丁和hotfix 2）。如果是普通的新开发者，建议下载这个就足够了。<br />
<br />
<br />
<font size="2"><strong>Flex Builder 3 BETA</strong></font><br />
官方下载：<a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_adobeflexbuilder3" target="_blank">http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_adobeflexbuilder3</a>&nbsp; （需要有Adobe帐号，登录后选择你需要的版本进行下载）<br />
官方介绍：<a href="http://labs.adobe.com/technologies/flex/flexbuilder3/" target="_blank">http://labs.adobe.com/technologies/flex/flexbuilder3/</a> <br />
本地下载：<a href="http://211.155.21.54:83/software/flexbuilder3_b1_win_sa_061107.exe" target="_blank">http://211.155.21.54:83/software/flexbuilder3_b1_win_sa_061107.exe</a><br />
说明：FLE BUILDER 3 BETA版，含AIR的开发环境，可以和FLEX 2共存（提示：你可以用FLEX BUILDER 2的注册码来注册）<br />
<br />
<font size="2"><strong>Flex SDK</strong></font><br />
官方下载：<a href="http://www.adobe.com/go/tryflex" target="_blank">http://www.adobe.com/go/tryflex</a>&nbsp; （需要有Adobe帐号，登录后选择你需要的版本进行下载）<br />
本地下载：<a href="http://211.155.21.54:83/software/flex_sdk_2.zip" target="_blank">http://211.155.21.54:83/software/flex_sdk_2.zip</a><br />
说明：Flex SDK，带了Flex Framework和Flex compiler，假如你喜欢用Ecllipse以外的IDE写MXML和AS3的话，可以只下载这个SDK。<br />
<br />
<font size="2"><strong>Flex Charting 2</strong></font><br />
官方下载：<a href="http://www.adobe.com/go/tryflex" target="_blank">http://www.adobe.com/go/tryflex</a>&nbsp; （需要有Adobe帐号，登录后选择你需要的版本进行下载）<br />
本地下载：<a href="http://211.155.21.54:83/software/FCC2_MLP_WWE.zip" target="_blank">http://211.155.21.54:83/software/FCC2_MLP_WWE.zip</a><br />
说明：Flex 官方的图表组件，Flex Builder已捆绑了这个组件。假如是单独下载Flex SDK的话，又想做图表相关的开发，则可单独下载这个<br />
<br />
<br />
<font size="2"><strong>AIR SDK (BETA)</strong></font> （原名APOLLO）<br />
官方下载：<a href="http://download.macromedia.com/pub/labs/air/air_b1_win_sdk_061107.zip" target="_blank">http://download.macromedia.com/pub/labs/air/air_b1_win_sdk_061107.zip</a>&nbsp; <br />
说明：假如没装Flex Builder 3 BETA，而又需要开发AIR应用的话，则可下载这个。<br />
<br />
<font size="2"><strong>AIR Runtime (alpha 1)</strong></font><br />
官方下足载：<a href="http://download.macromedia.com/pub/labs/air/air_b1_win_061107.exe" target="_blank">http://download.macromedia.com/pub/labs/air/air_b1_win_061107.exe</a><br />
本地下载：<a href="http://211.155.21.54:83/software/air_b1_win_061107.exe" target="_blank">http://211.155.21.54:83/software/air_b1_win_061107.exe</a><br />
说明：AIR运行环境。安装了这个后，则可运行AIR应用。<br />
<br />
<font size="2"><strong>FLASH CS3 Professional</strong></font><br />
官方下载:<a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash" target="_blank">https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash</a> （需要有Adobe帐号，登录后选择你需要的版本进行下载）<br />
本地下载:<a href="http://211.155.21.54:83/software/f9.zip" target="_blank">http://211.155.21.54:83/software/f9.zip</a><br />
说明：这个不用说了吧<br />
<br />
<font size="3"><strong><br />
服务器端</strong></font><br />
<br />
<font size="2"><strong>LiveCycle Data Services ES</strong></font> (原FDS)<br />
官方下载：<a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=livecycle%5Fdataservices" target="_blank">https://www.adobe.com/cfusion/tdrc/index.cfm?product=livecycle%5Fdataservices</a>&nbsp; （需要有Adobe帐号，登录后选择你需要的版本进行下载）<br />
说明：Flex的配套服务器端程序。使用他，可以给FLEX提供强的数据传输功能，包括AMF3格式的数据传输，数据PUSH，数据翻页等等。但一般性的Flex开发可以不选择下载并安装这个。<br />
<br />
<font size="2"><strong>Flex Module for Apache and IIS</strong></font>（BETA版）<br />
官方下载：<a href="http://download.macromedia.com/pub/labs/flex_mod_apache/flex_mod_full_win_050107.exe" target="_blank">http://download.macromedia.com/pub/labs/flex_mod_apache/flex_mod_full_win_050107.exe</a><br />
官方介绍：<a href="http://labs.adobe.com/wiki/index.php/Flex_Module_for_Apache_and_IIS" target="_blank">http://labs.adobe.com/wiki/index.php/Flex_Module_for_Apache_and_IIS</a><br />
说明：安装这个可以使你的服务器具有动态解析MXML的能力<br />
<br />
<br />
<font size="3"><strong>升级包</strong></font><br />
<br />
<font size="2"><strong>Flex 2.0.1升级包</strong></font><br />
官方下载：<a href="http://download.macromedia.com/pub/flex/flex_builder/flexbuilder2_201updater.exe" target="_blank">http://download.macromedia.com/pub/flex/flex_builder/flexbuilder2_201updater.exe</a><br />
本地下载：<a href="http://211.155.21.54:83/software/flexbuilder2_201updater.exe" target="_blank">http://211.155.21.54:83/software/flexbuilder2_201updater.exe</a><br />
<br />
<font size="2"><strong>Flex 2.0.1 SDK HOTFIX 1</strong></font><br />
详情及安装说明请看：<a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb401224" target="_blank">http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb401224</a><br />
官方下载：<a href="http://www.adobe.com/support/flex/ts/documents/kb401224/flex2sdk_hf1_159086.zip" target="_blank">http://www.adobe.com/support/flex/ts/documents/kb401224/flex2sdk_hf1_159086.zip</a><br />
<br />
<font size="2"><strong>Flex 2.0.1 patch for Flash CS3 Professional compatibility</strong></font>&nbsp; <br />
详情及安装说明请看：<a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb401493" target="_blank">http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb401493</a><br />
官方下载：<a href="http://www.adobe.com/support/flex/ts/documents/kb401493/flex_201_patch_FINAL.zip" target="_blank">http://www.adobe.com/support/flex/ts/documents/kb401493/flex_201_patch_FINAL.zip</a><br />
<br />
<font size="2"><strong>Flex Component Kit for Flash CS3</strong></font>&nbsp; <br />
详情及安装说明请看：<a href="http://labs.adobe.com/wiki/index.php/Flex_Component_Kit_for_Flash_CS3" target="_blank">http://labs.adobe.com/wiki/index.php/Flex_Component_Kit_for_Flash_CS3</a><br />
官方下载：<a href="http://download.macromedia.com/pub/labs/flex_flash_integrationkit/flex_component_kit_042307.mxp" target="_blank">http://download.macromedia.com/pub/labs/flex_flash_integrationkit/flex_component_kit_042307.mxp</a><br />
说明：安装在FLASH CS3上的一个插件，安装便可以输出在FLASH制作的，可供FLEX使用的组件。<br />
<br />
<font size="2"><strong>Flex 2.0.1 Hotfix 2</strong></font>&nbsp; <br />
详情及安装说明请看：<a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb401825" target="_blank">http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb401825</a><br />
官方下载：<a href="http://www.adobe.com/support/flex/ts/documents/flex2_hf2/FB2_Hotfix2_Installer_Win.exe" target="_blank">http://www.adobe.com/support/flex/ts/documents/flex2_hf2/FB2_Hotfix2_Installer_Win.exe</a><br />
说明：2007-5-23发布的Flex Builder Hotfix<br />
<br />
<font size="3"><strong>文档和书籍</strong></font><br />
<br />
<font size="2"><strong>FLEX 文档全集</strong></font><br />
<a href="http://211.155.21.54:83/e-book/flex201_documentation.rar" target="_blank">http://211.155.21.54:83/e-book/flex201_documentation.rar</a><br />
<br />
<font size="2"><strong>APOLLO文档包</strong></font><br />
<a href="http://211.155.21.54:83/software/apollo_docs_alpha1_031907.zip" target="_blank">http://211.155.21.54:83/software/apollo_docs_alpha1_031907.zip</a><br />
<br />
<font size="2"><strong>AS3 cookbook </strong></font><br />
<a href="http://211.155.21.54:83/e-book/Actionscript%203.0%20Cookbook%20Solutions%20For%20Adobe%20Flash%20Platform%20And%20Adobe%20Flex%20Application%20Developers.pdf" target="_blank">http://211.155.21.54:83/e-book/Actionscript 3.0 Cookbook Solutions For Adobe Flash Platform And Adobe Flex Application Developers.pdf</a><br />
<br />
<strong>Advanced.ActionScript.3.with.Design.Patterns</strong> <br />
<a href="http://211.155.21.54:83/e-book/Advanced%20ActionScript%203%20with%20Design%20Patterns%20-%202006%20(Adobe).chm" target="_blank">http://211.155.21.54:83/e-book/Advanced ActionScript 3 with Design Patterns - 2006 (Adobe).chm</a><br />
<br />
<font size="2"><strong>Adobe.Press.Adobe.Flex.2.Training.from.the.Source </strong></font>（从<a href="http://www.flex2.org/" target="_blank">flex2.org</a>收集）<br />
<a href="http://211.155.21.54:83/e-book/Adobe.Press.Adobe.Flex.2.Training.from.the.Source.Oct.2006_%5BFlex2.org%5D.chm" target="_blank">http://211.155.21.54:83/e-book/Adobe.Press.Adobe.Flex.2.Training.from.the.Source.Oct.2006_%5BFlex2.org%5D.chm</a><br />
<br />
<font size="2"><strong>apollo for flex pocketguide</strong></font><br />
<a href="http://211.155.21.54:83/e-book/apollo_for_flex_pocketguide_031907.pdf" target="_blank">http://211.155.21.54:83/e-book/apollo_for_flex_pocketguide_031907.pdf</a><br />
<br />
<font size="2"><strong>Programming Actionscript 3.0</strong></font><br />
<a href="http://211.155.21.54:83/e-book/Programming%20Actionscript%203.0.pdf" target="_blank">http://211.155.21.54:83/e-book/Programming Actionscript 3.0.pdf</a><br />
<br />
<font size="2"><strong>The.Essential.Guide.to.Flex.2.with.ActionScript.3.0</strong></font><br />
<a href="http://211.155.21.54:83/e-book/The.Essential.Guide.to.Flex.2.with.ActionScript.3.0.pdf" target="_blank">http://211.155.21.54:83/e-book/The.Essential.Guide.to.Flex.2.with.ActionScript.3.0.pdf</a><br />
<br />
提供几个FlexBuilder3序列号，我用的是第一个。<br />
<br />
1307-1581-4356-2616-4951-7949<br />
1307-1581-4356-2939-1231-4484<br />
1301-4581-4356-7349-9369-3351
<img src ="http://www.blogjava.net/yczz/aggbug/151715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-10-10 13:43 <a href="http://www.blogjava.net/yczz/articles/151715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>四个原因让Silverlight无法取代Flash</title><link>http://www.blogjava.net/yczz/articles/151675.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Wed, 10 Oct 2007 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/151675.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/151675.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/151675.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/151675.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/151675.html</trackback:ping><description><![CDATA[<h5>微软不是一个令人尊敬的创新型企业，但它凭借其强大的技术背景和雄厚的资金实力，通过复制、模仿、完善竞争对手的<nobr><strong onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u4EA7_u54C1";KeyGate_ads.ShowGgAds(this,"_u4EA7_u54C1",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BNmRlKEoMR7CSFJXC6wO7w_HpDM7DlC3elaqhA8CNtwGgnAEQAhgCILHzmwkoFDgAUIPCs-cBYJ2h34HYBaoBCjIwMDAwMDQxMjGyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA3MDYwNi8xMDQ5NDQuaHRtbIACAagDAegDBOgD5wHoA_4D9QMABAAA&amp;num=2&amp;adurl=http://nmjava.com/index_Chinese.html&amp;client=ca-pub-9553494669999741");GgKwClickStat("产品","nmjava.com/index_Chinese.html","afc","2000004121");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u4EA7_u54C1"'>产品</strong></nobr>，往往可以做到后来居上。<span style="color: black">Flash</span><span style="color: black; font-family: 宋体">最大的优势在于它的技术成熟、稳定，并且已经拥有了一大批的忠实拥护者，在当前网络动画编辑领域居于绝对领先地位。微软发布的</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">是一个跨浏览器运行的插件，和</span><span style="color: black">Flash</span><span style="color: black; font-family: 宋体">一样，可以显示矢量图形、动画和视频。</span>
<p><span style="color: black; font-family: 宋体">虽然在很多方面，</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">表现出了比</span><span style="color: black">Flash</span><span style="color: black; font-family: 宋体">更佳的性能，例如与</span><span style="color: black">AJAX</span><span style="color: black; font-family: 宋体">结合更紧密，更容易动态生成，对搜索引擎更友好，开发<nobr><strong onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u5DE5_u5177";KeyGate_ads.ShowGgAds(this,"_u5DE5_u5177",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=Bg8dVKEoMR7CSFJXC6wO7w_HpDNm0lDHJnq-0A8CNtwGA8QQQARgBILHzmwkoFDgAUKnYt-4HYJ2h34HYBaABz9nP-QOqAQoyMDAwMDA0MTIxsgENbmV3cy5jc2RuLm5ldMgBAdoBK2h0dHA6Ly9uZXdzLmNzZG4ubmV0L24vMjAwNzA2MDYvMTA0OTQ0Lmh0bWyAAgGpAhKsLqez3IE-yAK15psDqAMB6AME6APnAegD_gP1AwAEAAA&amp;num=1&amp;adurl=http://www.jingoal.com&amp;client=ca-pub-9553494669999741");GgKwClickStat("工具","www.JinGoal.com","afc","2000004121");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u5DE5_u5177"'>工具</strong></nobr>集成度更高，等等。本文作者还是从以下四个方面列举了</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">无法取代</span><span style="color: black">Flash</span><span style="color: black; font-family: 宋体">的理由。</span></p>
<p><span style="color: black; font-family: 宋体"><strong>技术潜力</strong></span></p>
<p><span style="color: black; font-family: 宋体">对于一个专业开发者，在考虑选择哪门技术的时候，很重要的一个方面就是这门技术的<nobr><strong onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u53D1_u5C55";KeyGate_ads.ShowGgAds(this,"_u53D1_u5C55",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BqlIjKEoMR7CSFJXC6wO7w_HpDPXBzi-lkrWuA8CNtwGA8QQQBhgGILHzmwkoFDgAUJacuZ_7_____wFgnaHfgdgFqgEKMjAwMDAwNDEyMbIBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDcwNjA2LzEwNDk0NC5odG1sgAIBqQISrC6ns9yBPsgC1fCOA6gDAegDBOgD5wHoA_4D9QMABAAA&amp;num=6&amp;adurl=http://www.c-gconsultancy.com&amp;client=ca-pub-9553494669999741");GgKwClickStat("发展","www.C-gconsultancy.com","afc","2000004121");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u53D1_u5C55"'>发展</strong></nobr>潜力。包括它的改善空间、提升余地，以及你投入时间掌握这门技术后获得的经济回报。</span></p>
<p><span style="color: black; font-family: 宋体">在短时间内，</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">会表现出强大的潜力。微软是一家资本雄厚的大公司，典型的微软模式就是，微软会为</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">砸很多钱，让人们相信这是一门值得学习的技术。我知道有许多</span><span style="color: black">Flash</span><span style="color: black; font-family: 宋体">开发者已经通过开发</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">项目赚取了可观的收入，这些项目是由</span><span style="color: black">Redmond</span><span style="color: black; font-family: 宋体">直接或间接援助的。</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">在这个方面完全不能和微软竞争。虽然</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">也有雄厚的资金，但还远比不上微软那样富到可以买上一个小国家。</span></p>
<p><span style="color: black; font-family: 宋体">从长远来看，人们从</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">开发中学到的基本知识也不会昙花一现。但是，如果你真的对开发跨平台交互式</span><span style="color: black">WEB</span><span style="color: black; font-family: 宋体">感兴趣，</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">技术未来将会在很大程度上把你的<nobr><strong onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u6210_u529F";KeyGate_ads.ShowGgAds(this,"_u6210_u529F",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BdhpwKEoMR7CSFJXC6wO7w_HpDK7wyDe2ldXJAsCNtwGA8QQQCRgJILHzmwkoFDgAUIzHoPD7_____wFgnaHfgdgFqgEKMjAwMDAwNDEyMbIBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDcwNjA2LzEwNDk0NC5odG1sqQISrC6ns9yBPsgC1ue9A6gDAegDBOgD5wHoA_4D9QMABAAA&amp;num=9&amp;adurl=http://www.gzlongpeng.com/cpbj.htm&amp;client=ca-pub-9553494669999741");GgKwClickStat("成功","www.gzlongpeng.com","afc","2000004121");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u6210_u529F"'>成功</strong></nobr>锁定在同一个平台（</span><span style="color: black">Windows</span><span style="color: black; font-family: 宋体">）上。</span></p>
<p><span style="color: black; font-family: 宋体">小结：</span><span style="color: black">Flash</span><span style="color: black; font-family: 宋体">也许没有如</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">淘金般的发展潜力，但它是一门非常确立和成熟的技术（</span><span style="color: black">98%</span><span style="color: black; font-family: 宋体">的安装基础，其中</span><span style="color: black">85%</span><span style="color: black; font-family: 宋体">以上是</span><span style="color: black">Flash Player 9</span><span style="color: black; font-family: 宋体">版本），它还会继续扩大它的使用范围，并在相当长的时间内在开发交互式</span><span style="color: black">Web</span><span style="color: black; font-family: 宋体">领域稳定增长。当前微软在推动</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">发展方面投入了大量的金钱，但是在未来如果微软不再象现在这样往里面砸钱的话，</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">的前景就另人担忧了。</span></p>
<p><span style="color: black; font-family: 宋体"><strong>运行时</strong></span></p>
<p><span style="color: black; font-family: 宋体">大多数对这两门技术的讨论都集中在其虚拟机的性能上。很正常，一个平台的成功性在很大程度上决定于它的性能。对于</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">，我并不是了解太多，但从现有资料看来，当前</span><span style="color: black">1.0beta VM</span><span style="color: black; font-family: 宋体">基本上是</span><span style="color: black">SVG/WM</span><span style="color: black; font-family: 宋体">接口。它并不支持构件（</span><span style="color: black">AKA controls</span><span style="color: black; font-family: 宋体">），没有现成的语言解释器，也没有太多另人兴奋的亮点。而在新发布的&#945;版</span><span style="color: black">Silverlight 1.1</span><span style="color: black; font-family: 宋体">中这些方面有了明显的改进。但是</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">在这方面还是处于领先地位，成熟的跨平台开发体验，对目标市场也有更深入的理解。</span></p>
<p><span style="color: black; font-family: 宋体">接口大小和实用性也是考察的重要因素。</span><span style="color: black">Flash player</span><span style="color: black; font-family: 宋体">，包括两个虚拟机、大量的功能程序，只有</span><span style="color: black">2MB</span><span style="color: black; font-family: 宋体">，功能残缺不全的</span><span style="color: black">Silverlight1.0 beta</span><span style="color: black; font-family: 宋体">是</span><span style="color: black">1.2MB</span><span style="color: black; font-family: 宋体">（</span><span style="color: black">Mac</span><span style="color: black; font-family: 宋体">上是</span><span style="color: black">5.3MB</span><span style="color: black; font-family: 宋体">）。支持动态语言运行的&#945;版</span><span style="color: black">Silverlight 1.1</span><span style="color: black; font-family: 宋体">扩大到</span><span style="color: black">4.2MB</span><span style="color: black; font-family: 宋体">（</span><span style="color: black">Mac</span><span style="color: black; font-family: 宋体">上是</span><span style="color: black">10.3MB</span><span style="color: black; font-family: 宋体">），如果要浏览</span><span style="color: black">Managed SilverLight</span><span style="color: black; font-family: 宋体">的网页</span><span style="color: black">,</span><span style="color: black; font-family: 宋体">就得下载这个</span><span style="color: black">Runtime,</span><span style="color: black; font-family: 宋体">这对于储存空间拮据的手机系统来说</span><span style="color: black">,</span><span style="color: black; font-family: 宋体">还是稍嫌庞大些。我预计将来还会更加庞大。接口大小在几年前也许还不是什么大问题，但它仍然会对接受度有很大的影响。在另一个方面说来，与网络相连的电脑上已经有</span><span style="color: black">98%</span><span style="color: black; font-family: 宋体">都安装了</span><span style="color: black">Flash player</span><span style="color: black; font-family: 宋体">了，它能自动更新，可以在</span><span style="color: black">Window</span><span style="color: black; font-family: 宋体">s</span><span style="color: black; font-family: 宋体">、Mac和Lunix上运行，是发布后升级最迅速的软件产品（前提是用户接受新版本）。</span></p>
<p><span style="color: black; font-family: 宋体">小结：如果微软在这些方面继续改进，</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">会有非常大的潜力。不幸的是，我看到他们动作缓慢。</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">仍大规模的领先，在实用性和普及率方面。</span></p>
<p><span style="color: black; font-family: 宋体"><strong>开发工具</strong></span></p>
<p><span style="color: black; font-family: 宋体">我看过</span><span style="color: black">Expression suite</span><span style="color: black; font-family: 宋体">，它给我留下了深刻印象，微软对它做了很大的改善。他们从</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">的成功中学习长处并改进了其缺点。微软有许多开发实用开发工具的经验，这在它们的</span><span style="color: black">Expression</span><span style="color: black; font-family: 宋体">工具中就可以看出。在这方面，</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">并没有太多创建开发工具的经验。微软正在对</span><span style="color: black">Expression</span><span style="color: black; font-family: 宋体">进行更新。</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">也在做着一件深远的事，就是集成他们的开发工具创建一个凝聚性的<nobr><strong onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u5DE5_u4F5C_u6D41";KeyGate_ads.ShowGgAds(this,"_u5DE5_u4F5C_u6D41",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BhcftKEoMR7CSFJXC6wO7w_HpDKmc0CvtrruXAsCNtwGQvwUQCBgIILHzmwkoFDgAUOihuYkGYJ2h34HYBaoBCjIwMDAwMDQxMjGyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA3MDYwNi8xMDQ5NDQuaHRtbKkCEqwup7PcgT7IAvmLiQOoAwHoAwToA-cB6AP-A_UDAAQAAA&amp;num=8&amp;adurl=http://www.rephensoft.com&amp;client=ca-pub-9553494669999741");GgKwClickStat("工作流","www.rephensoft.com","afc","2000004121");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u5DE5_u4F5C_u6D41"'>工作流</strong></nobr>。</span></p>
<p><span style="color: black; font-family: 宋体">从另一个角度，微软并没有开发设计工具的经验，事实上他们对设计者还不够了解。他们的工具只能在</span><span style="color: black">Windows</span><span style="color: black; font-family: 宋体">平台上使用，这从一开始就切断了一半的设计者市场。在今年的微软</span><span style="color: black">MIX</span><span style="color: black; font-family: 宋体">大会上，一位参会者在会间询问</span><span style="color: black">Lynda</span><span style="color: black; font-family: 宋体">（</span><span style="color: black">Lynda.com</span><span style="color: black; font-family: 宋体">站长），如果设计者们熟悉</span><span style="color: black">Expression</span><span style="color: black; font-family: 宋体">后将如何转到</span><span style="color: black">Windows</span><span style="color: black; font-family: 宋体">平台上去。她回答说她自己就是个</span><span style="color: black">Mac</span><span style="color: black; font-family: 宋体">用户，但她不会转到</span><span style="color: black">Windows</span><span style="color: black; font-family: 宋体">上去。我为</span><span style="color: black">Lynda</span><span style="color: black; font-family: 宋体">的诚实鼓掌，我相信这也清楚的证实了微软要想让抵制者们改变原来的工具并不是一件容易的事。</span></p>
<p><span style="color: black; font-family: 宋体">小结：微软将会建立更完善的开发工具集，并提供更佳的集成工具。但是，他们事实上是不愿意支持</span><span style="color: black">Macs</span><span style="color: black; font-family: 宋体">的，他们并不能深入的理解创造性和设计者是他们的要害。</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">对创造的流程有很深入的理解，它们对跨平台的支持性是微软不能比敌的。</span></p>
<p><span style="color: black; font-family: 宋体"><strong>未来趋势</strong></span></p>
<p><span style="color: black; font-family: 宋体">虽然很容易被忽视，但这是一个非常重要的问题。为什么微软会构造</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">？微软的长远意图是什么？<font face="Arial">现在主要猜测是用来抢占Flash的RIA应用市场</font>，但根据过去的观察，微软的行动一直很稳健，我想这一次也不会例外。</span></p>
<p><span style="color: black; font-family: 宋体">微软因为其经常会在一项技术已被事实证明是成功后，再进入这个领域而臭名昭著，他们会扔进大量的金钱逐渐去扼杀竞争，一旦形成垄断，技术的发展就会遇到很大的阻碍。微软也经常会因一时的怪念头而放弃对跨平台特性的支持。确实，他们提供的很多跨平台产品到最后都会因为某种冠冕堂皇的理由被抛弃或半途而废（</span><span style="font-size: 9pt; color: black; font-family: Arial">MAPI in</span><span style="color: black"> Entourage, IE, VBScript in Office, Windows Media versioning and DRM, heck, </span><span style="color: black; font-family: 宋体">甚至</span><span style="color: black">Halo</span><span style="color: black; font-family: 宋体">）。</span></p>
<p><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">也不是慈善家，但他们已经证明自己的产品能够成功的支持跨平台特性，即使在交互式</span><span style="color: black">WEB</span><span style="color: black; font-family: 宋体">页面开发上真正意义上的竞争者并不多，但</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">一直在对产品进行改进。</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">会迫使他们做的更好。举个例子，如果没有</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">的出现，我们能否如此快的在</span><span style="color: black">Linux</span><span style="color: black; font-family: 宋体">上看到</span><span style="color: black">Flash player9</span><span style="color: black; font-family: 宋体">也将会是个疑问。</span></p>
<p><span style="color: black; font-family: 宋体">小结：如果消灭掉了</span><span style="color: black">Flash</span><span style="color: black; font-family: 宋体">，继续追求跨平台特性就不会是微软最佳利益的选择了，也很难保证持续对其革新。做为一个长期的</span><span style="color: black">Mac</span><span style="color: black; font-family: 宋体">用户，我真的不能相信微软的意图，但是看到在</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">的压力下</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">的持续改进也是一件另人高兴的事。</span></p>
<p><span style="color: black; font-family: 宋体">结论：总的说来，我相信</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">的潜力，尤其在短期内微软砸进大量金钱的效果会比较明显。在不远的将来，微软的开发工具也可能会更加健壮，比起</span><span style="color: black">Adobe</span><span style="color: black; font-family: 宋体">提供的工具有更高的集成度，但是仅仅支持</span><span style="color: black">Windows</span><span style="color: black; font-family: 宋体">平台的特性会让大量的开发者和设计者与</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">保持距离。我相信</span><span style="color: black">Silverlight</span><span style="color: black; font-family: 宋体">接口将会是一个合适的运行时程序，但它不会象</span><span style="color: black">Flash player</span><span style="color: black; font-family: 宋体">那样打包到用字节计算，也决不会达到象</span><span style="color: black">Flash</span><span style="color: black; font-family: 宋体">那样的安装普及率。</span></p>
</h5>
<img src ="http://www.blogjava.net/yczz/aggbug/151675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-10-10 11:43 <a href="http://www.blogjava.net/yczz/articles/151675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>