0

我正在使用单独的“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()”

拜托我需要你的帮忙!!!非常感谢

4

2 回答 2

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);            
          }
         }
于 2012-05-31T20:59:00.813 回答
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
}
于 2012-05-31T22:44:02.097 回答