我在ActionScript中加载一个swf文件。到目前为止没有问题,但是我没有找到一种方法来访问它的一个函数,最好的办法是如果我可以访问swf的mxml部分中的main函数。
以下是属于swf的main-mxml文件的代码,该文件应加载并访问另一个swf:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="basket();">
<mx:Script>
<![CDATA[
import mx.controls.SWFLoader;
private function basket(): void
{
var swfLoader: SWFLoader = new SWFLoader();
swfLoader.addEventListener( Event.COMPLETE, handleSWFLoaded );
try {
swfLoader.load( "../../data/InternalSWF.swf" );
} catch (error: Error) {
trace( "Couldn't load file !" );
}
}
private function handleSWFLoaded( event: Event ): void
{
var swfApp:* = event.target.content;
// This both ways don't work...
//if (swfApp.hasOwnProperty("initApp")) {
// var initApp:Function = (swfApp["initApp"] as Function);
// initApp();
//}
// swfApp.initApp();
}
]]>
</mx:Script>
<mx:Text id="output" width="100%" textAlign="center" />
</mx:Application>
if-Statement“if(swfApp.hasOwnProperty(”initApp“)){”永远不会是真的 调用“swfApp.initApp()”表示该函数不存在。
在原始版本中,我为HTTPStatusEvent.HTTP_STATUS,IOErrorEvent.IO_ERROR和SecurityErrorEvent.SECURITY_ERROR添加了事件侦听器。但是除了HTTP_STATUS = 0之外,没有一个被调用。
我是如何尝试做错的全部想法?
答案 0 :(得分:0)
在帖子后几天找到解决方案:)
加载swf后,您可以使用以下代码访问内部函数(在此示例中为initApp()):
public function getInnerSWF():Object
{
var sysMan:SystemManager = swfLoader.content as SystemManager;<br>
return sysMan.document;
}
getInnerSWF().initApp();