我有两个文件: Main.swf和DataEnter.swf。每个类都有一个文档类。我试图在DataEnter.swf中加载Main.swf。
Main.as
package
{
import flash.events.*;
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.display.Loader;
public class Main extends MovieClip
{
public function Main()
{
var loader: Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, DataEnter_loadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
loader.load(new URLRequest('DataEnter.swf'));
}
function DataEnter_loadComplete(evt: Event):void
{
trace(evt.target.content); // DataEnter__Preloader__
var SWF = evt.target.content;
SWF.FooBar(); //Error #1069: Property FooBar not found on DataEnter__Preloader__ and there is no default value
}
}
}DataEnter.as
package
{
import flash.display.Sprite;
public class DataEnter extends Sprite
{
private var _socketWorker:Foo;
public function setSocketWorker(sw:Foo)
{
_socketWorker = sw;
}
public function FooBar()
{
//do something
}
}
}当主类中发生Loader的事件Event.COMPLETE时,evt.target.content包含对象evt.target.content但它一定是"DataEnter“。
怎么啦?如何调用加载类的方法FooBar?
发布于 2012-01-06 11:32:30
我在FlashDevelopIDE.开了DataEnter.swf这表明我的文件有两个框架,但是FlashIDE只有一个框架。
在DocumentClass of DataEnter中,我包含了一个类"Foo",它可以处理套接字。但是,这个类的对象传入构造函数。
当我删除类"Foo“并再次发布文件时,在加载swf文件时,*DataEnter_Preloader_*就消失了,预期的DataEnter出现了。
抱歉,英语不好
发布于 2011-11-28 20:36:55
您是否在扩展ActionScript设置面板的运行时共享库部分中使用预加载器选项?
发布于 2012-01-02 18:24:33
我也遇到了这个问题。回溯之后,结果是在数据swf中添加了一个嵌入式字体,从而导致了这种情况。
我建议从DataEnter.FLA中删除任何嵌入式字体,并重新发布SWF,以使其正常工作。
https://stackoverflow.com/questions/8301902
复制相似问题