Flex調用swf內方法

來源:互聯網
上載者:User

一般我們產生的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>  

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

HelloWorld2.as

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

package{ public class HellowWorld2{ public function sayHello():void{ trace("HelloWorld from AS"); } } } 

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>  

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

HelloWorld1.mxml和HelloWorld2.as分別用Flex SDK編譯成swf,然後在app.mxml內調試。

可以看出第一種情況產生的swf因為是通過mxml產生的,e.target.content其實是一個SystemManager類對象,必須要 通過它的application才能訪問swf內部方法,而用as類直接產生的swf通過e.target.content就能直接存取。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.