我正在使用单独的“DocumentMain.as”为Flash CS5 actionScript3创建游戏,我想将其导入另一个swf文件,即菜单。我希望当我点击菜单中的“开始”时,它会将我带到游戏文件中!
以下是我使用的代码
btnstart.addEventListener(MouseEvent.CLICK,gamecontent);
function gamecontent(myevent:MouseEvent):void{
var myURL:URLRequest=new URLRequest("game.swf");
myLoader.load(myURL);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
function onCompleteHandler(loadEvent:Event):void
{
addChild(loadEvent.currentTarget.content);
}
}
然而,它不起作用,它向我显示了这个信息 “TypeError:错误#1009:无法访问空对象引用的属性或方法。 在DocumentMain()“
我需要你的帮助! 非常感谢
答案 0 :(得分:0)
要找到问题,最简单的方法是尝试在URLRequest中添加game.swf的完整路径..如果它有效,那么你就知道所有你需要做的就是将它改回“game.swf” ,将fla文件重新保存在与game.swf相同的文件夹中,并将预览swf导出到同一个文件夹并再试一次..当我遇到完全相同的问题时,这对我有用..它'只是没有'似乎知道它的根文件夹在哪里。
import flash.net.URLRequest;
import flash.display.Loader;
btnstart.addEventListener(MouseEvent.CLICK,gamecontent);
function gamecontent(myevent:MouseEvent):void{
var myURL:URLRequest=new URLRequest("file:///c:/yourfolder/folder/game.swf");
myLoader.load(myURL);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
function onCompleteHandler(loadEvent:Event):void
{
addChild(loadEvent.currentTarget.content);
}
}
答案 1 :(得分:0)
您可能正在访问stage
构造函数中的DocumentMain
。将SWF加载到另一个SWF时会抛出错误,因为子SWF中的舞台不可用。
将访问舞台的任何代码从DocumentMain
构造函数移动到ADDED_TO_STAGE
处理程序,如下所示:
public function DocumentMain()
{
addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
}
public function addedToStageHandler(ev:Event)
{
trace(stage);
//Code that was previously in the constructor
}