现在的位置: 首页 > 综合 > 正文

Flex调用swf内方法

2013年11月10日 ⁄ 综合 ⁄ 共 2385字 ⁄ 字号 评论关闭

原文见:http://blog.csdn.net/genius840215/archive/2010/03/25/5411732.aspx

 

一般我们生成的swf有3种,一种是Flex mxml主应用编译得到,第2种类是用Flex
SDK编译as类得到,还有一个就是fla在Flash CS3内运行生成。

因为第3种的调用方法同第2种,这里就说明前2种swf在Flex项目内的应用。

HelloWorld1.mxml

  1. <?
    xml
     
    version
    =
    "1.0"
     
    encoding
    =
    "utf-8"
    ?>
      
  2. <
    mx:Application
     
    xmlns:mx
    =
    "http://www.adobe.com/2006/mxml"
      
    layout
    =
    "absolute"
     
    >
      
  3.     <
    mx:Script
    >
      
  4.         <!--[CDATA[  
  5.             public function sayHello():void{  
  6.                 trace("HelloWorld from mxml");  
  7.             }  
  8.         ]]-->
      
  9.     </
    mx:Script
    >
      
  10. </
    mx:Application
    >
      


HelloWorld2.as

  1. package
    {  
  2.     public
     
    class
     HellowWorld2{  
  3.         public
     
    function
     sayHello():
    void
    {  
  4.             trace("HelloWorld from AS"
    );  
  5.         }  
  6.     }  
  7. }  

 

app.mxml

  1. <?
    xml
     
    version
    =
    "1.0"
     
    encoding
    =
    "utf-8"
    ?>
      
  2. <
    mx:Application
     
    xmlns:mx
    =
    "http://www.adobe.com/2006/mxml"
      
    layout
    =
    "absolute"
     
    >
      
  3.     <
    mx:Script
    >
      
  4.         <!--[CDATA[  
  5.             public function CompleteHandler1(evt:Event):void{  
  6.                 Object(evt.target.content.application).sayHello();            
  7.             }  
  8.             public function CompleteHandler1(evt:Event):void{  
  9.                 Object(evt.target.content).sayHello();  
  10.             }  
  11.         ]]-->
      
  12.     </
    mx:Script
    >
      
  13.     <
    SWFLoader
     
    id
    =
    "hw1"
     
    source
    =
    "HelloWorld1.swf"
     
    complete
    =
    "CompleteHandler1(event)"
    />
      
  14.     <
    SWFLoader
     
    id
    =
    "hw2"
     
    source
    =
    "HelloWorld2.swf"
     
    complete
    =
    "CompleteHandler2(event)"
    />
      
  15. </
    mx:Application
    >
      

 

HelloWorld1.mxml和HelloWorld2.as分别用Flex SDK编译成swf,然后在app.mxml内调试。

可以看出第一种情况生成的swf因为是通过mxml生成的,e.target.content其实是一个SystemManager类对象,必须要
通过它的application才能访问swf内部方法,而用as类直接生成的swf通过e.target.content就能直接访问。

抱歉!评论已关闭.