您的位置:首页 > 其它

Flex调用swf内方法

2010-03-27 11:54 381 查看
原文见: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

<?
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就能直接访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: