一般我們產生的swf有3種,一種是Flex mxml主應用編譯得到,第2種類是用Flex SDK編譯as類得到,還有一個就是fla在Flash CS3內運行產生。
因為第3種的調用方法同第2種,這裡就說明前2種swf在Flex項目內的應用。
HelloWorld1.mxml
- <?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>
<?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
- package{
- public class HellowWorld2{
- public function sayHello():void{
- trace("HelloWorld from AS");
- }
- }
- }
package{ public class HellowWorld2{ public function sayHello():void{ trace("HelloWorld from AS"); } } }
app.mxml
- <?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>
<?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就能直接存取。