如何导入swf文件有“DocumentMain.as”到另一个swf文件?

时间:2012-05-31 16:12:15

标签: flash flash-cs5

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

我需要你的帮助! 非常感谢

2 个答案:

答案 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
}