Flash CS4新特性——支持部分Flex组件

今天又发现Flash CS4的一个新特性:支持部分Flex组件,这得益于Flash CS4对Flex SDK的部分支持。

大家都知道,在Flash 8中有大量类似于Flex的组件,但在Flash CS3中却被去掉了,Flash CS3的组件都是轻型组件,抛弃了Flash 8/Flex的重型架构,因此我们不能在Flash CS3使用Webservice组件。在Flash CS4,我们可以使用Flex SDK来编译AS,也可以用Flex的Webservice组件来连接Webservice服务。

首先,选择Prefences>ActipnScript>ActipnScript 3.0 Settings..,打开如下对话框,添加编译Webservice所需的两个SWC:framework.swcrpc.swc

ActipnScript 3.0 Advanced Settings

添加如下代码:

package { 
  import fl.controls.List; 
  import flash.display.Sprite; 
  import mx.rpc.events.FaultEvent; 
  import mx.rpc.events.ResultEvent; 
  import mx.rpc.soap.LoadEvent; 
  import mx.rpc.soap.Operation; 
  import mx.rpc.soap.WebService; 
  [SWF(backgroundColor='0xFFFFFF',width='200',height='220')] 
  public class City extends Sprite { 
    private var ws:WebService = new WebService(); 
    private var list:List = new List(); 
    private var op:Operation; 
    public function City() { 
      addChild(list); 
      list.setSize(180, 200); 
      list.move(10, 10); 
      ws.addEventListener('load', loadHandler); 
      ws.loadWSDL('http://www.webservicex.net/globalweather.asmx?WSDL'); 
    } 
    private function loadHandler(evt:LoadEvent):void { 
      op=Operation(ws.getOperation('GetCitiesByCountry')); 
      op.addEventListener('fault', faultHandler); 
      op.addEventListener('result', resultHandler); 
      op.send('China'); 
    } 
    private function faultHandler(evt:FaultEvent):void { 
      trace(evt.fault); 
    } 

    private function resultHandler(evt:ResultEvent):void { 
      for each (var xml:XML in XML(evt.result)..City) { 
        list.addItem({label:xml.toString()}); 
      } 
    } 
  } 
}

发布时可以选择Flash Player 9及以上版本。

显然,在Flash CS4使用Flex组件会使用swf文件大小猛增,因此慎用为好。

发表评论

电子邮件地址不会被公开。 必填项已用*标注