作为Rich Internet Application开发工具,Flex相较Ajax有不少的优势,甚至连Wpf也不多让。Flex的表现层是基于Flash,因此,不仅界面非富,而且可以做到真正的跨平台。
  它的劣势就是,Flex2需要Flash9播放器。

  前次讨论中,金彩同学曾说过Flash的开发界面不适合程序员。实质上,程序是一群学习欲很强的人,因此Flash的开发界面不是阻碍程序员的理由;不过毕竟Flash是为动画设计的。Flex2 Builder却专为网络应用程序员设计的,它基于Eclipse的开发界面也非常的友好。
  这次我给大家举个小小的例子,希望不认识Flex的人会有兴趣去接触,去了解;让网络应用程序的开发更轻松,更丰富多彩,更多样化--不仅仅是Ajax哦。

  这是一个极其简单的例子:求一个指定半径的圆的周长。
  在Flex2Builder中,创建一个MXML项目,然后,在设计界面上拖上几个工具(如Label,TextInput,Button)之类的,如图:
Flex与.NET WebService (转)

  给输入框的id设置为radius,给输出的Label的id设置为girth。然后切换到源码窗口:
Flex与.NET WebService (转)  

  现在需要增加的是计算函数。在前面插入代码,并且在Button中加入click事件:

Flex与.NET WebService (转)

  保存,运行,界面如下:

Flex与.NET WebService (转)
  如果有安装Flash9浏览器插件的同学可以操作一下:

  实际上,Flex2Builder生成的是swf文件,它可以在任何一个支持Flash9的浏览器或Flash播放器中执行。

  现在,让它复杂一点。我增加一个ASP.NET的WebService,由它提供计算功能:

Flex与.NET WebService (转)using System;
Flex与.NET WebService (转)
using System.Web;
Flex与.NET WebService (转)
using System.Web.Services;
Flex与.NET WebService (转)
using System.Web.Services.Protocols;
Flex与.NET WebService (转)
Flex与.NET WebService (转)[WebService(Namespace 
= "http://tempuri.org/")]
Flex与.NET WebService (转)[WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
Flex与.NET WebService (转)
public class Service : System.Web.Services.WebService

  它现在运行在http://localhost:2603/CalcCircleService/Service.asmx上面。

  回过头来对上面的程序进行修改:

Flex与.NET WebService (转)<?xml version="1.0" encoding="utf-8"?>
Flex与.NET WebService (转)
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
Flex与.NET WebService (转)    
<mx:WebService id="calcService" 
Flex与.NET WebService (转)        wsdl
="http://localhost:2603/CalcCircleService/Service.asmx?WSDL"
Flex与.NET WebService (转)        useProxy
="false">
Flex与.NET WebService (转)        
<mx:operation name="Calc">
Flex与.NET WebService (转)            
<mx:request>
Flex与.NET WebService (转)                
<r>{radius.text}</r>
Flex与.NET WebService (转)            
</mx:request>
Flex与.NET WebService (转)        
</mx:operation>
Flex与.NET WebService (转)    
</mx:WebService>
Flex与.NET WebService (转)
Flex与.NET WebService (转)    
<mx:Panel x="10" y="10" width="313" height="200" layout="absolute" fontFamily="Times New Roman" fontSize="12" title="计算圆周长">
Flex与.NET WebService (转)        
<mx:Label x="10" y="24" text="半径:"/>
Flex与.NET WebService (转)        
<mx:TextInput x="53" y="22" id="radius"/>
Flex与.NET WebService (转)        
<mx:Text x="10" y="74" text="圆周长:"/>
Flex与.NET WebService (转)        
<mx:Text x="71" y="74" text="{calcService.Calc.lastResult}" id="girth"/>
Flex与.NET WebService (转)        
<mx:Button x="221" y="22" label="计算" click="calcService.Calc.send();"/>
Flex与.NET WebService (转)    
</mx:Panel>
Flex与.NET WebService (转)    
Flex与.NET WebService (转)
</mx:Application>
Flex与.NET WebService (转)

  这回把脚本都删了。多了一个WebService的定义:calcService,还定义一个操作Calc,它有一个参数r,这个参数是根据输入框的内容的“radius.text”。
  然后将Button的click事件改成“calcService.Calc.send();”发送一个调用请求。
  当请求返回后,结果会自动显示在界面中。因为该处的文本内容定义为calcService.Calc的最后一次的返回结果“calcService.Calc.lastResult”。这相当于.NET中的数据绑定。

  至于界面的特效,Flex仍然保持Flash的优势。如果需要,可以给所有的界面元素增加多个特效--就象Wpf一样漂亮(不过只有2D的效果)。

  非常简单,不是吗?赶紧试试。

 ----
Adobe网站提供所有的下载:
http://www.adobe.com/products/flex/
http://www.adobe.com/cn/products/flex/

其中,Flex2 SDK是免费的。当然,它只有命行的开发环境。

Flah9 Player插件浏览下面的链接就可以选择是否安装,安装后再重启浏览器,就可以看见本文中
编译过的swf程序,并进行操作。

http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=BIOW

安装完Flash9插件后,可以到:
http://www.adobe.com/devnet/flex/?tab:samples=1
试试各种Flex2编写的例子。不过,由于站点在海外,国内某些网络可能会比较慢。

Yahoo地图,就是Flex2的典型应用例子。大家可以体验一下:
http://maps.yahoo.com/beta/index.php#mvt=m&maxp=search&trf=0&lon=-98.393555&lat=37.405074&mag=14

相关文章: