Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 需要从阵列中卸载外部swf..cs4 as3_Actionscript 3_Flash_Cs4 - Fatal编程技术网

Actionscript 3 需要从阵列中卸载外部swf..cs4 as3

Actionscript 3 需要从阵列中卸载外部swf..cs4 as3,actionscript-3,flash,cs4,Actionscript 3,Flash,Cs4,我必须把一些画变成动画flash SWF/游戏,其他人会把它变成一个应用程序 我有一个打开的动画-这会导致一个菜单,在那里你可以选择一些东西-但现在动画只是播放到用户选择游戏的帧 我制作了一个游戏菜单——当你选择一个游戏时——按钮会将特定的游戏加载到一个空的MC中(称为emptymc——实例名emptymc_MC) 游戏加载并覆盖整个屏幕,除了顶层的菜单栏,它在应用程序中始终位于下方。我还没有做这些选择,但它很可能是一个声音切换-访问网站-购买完整的应用程序 理想情况下,我希望这是完成到最后一帧

我必须把一些画变成动画flash SWF/游戏,其他人会把它变成一个应用程序

我有一个打开的动画-这会导致一个菜单,在那里你可以选择一些东西-但现在动画只是播放到用户选择游戏的帧

我制作了一个游戏菜单——当你选择一个游戏时——按钮会将特定的游戏加载到一个空的MC中(称为emptymc——实例名emptymc_MC)

游戏加载并覆盖整个屏幕,除了顶层的菜单栏,它在应用程序中始终位于下方。我还没有做这些选择,但它很可能是一个声音切换-访问网站-购买完整的应用程序

理想情况下,我希望这是完成到最后一帧,然后卸载或删除本身。同时,SWF在下面显露出来。我的问题是,即使我将新版本加载到加载程序中,我也无法摆脱导入的SWF

stop(); 

bee.addEventListener(MouseEvent.CLICK, Click);
function Click( event:MouseEvent):void {
    gotoAndPlay(currentFrame+1);
}

bee.addEventListener(MouseEvent.CLICK,f);
function f(e:Event):void{
var movieArray:Array = ["howmanybees1", "howmanybees2", "howmanybees3",];
var loader:Loader = new Loader(); 
var index:int = movieArray.length * Math.random();
var url:String = movieArray[index] + '.swf'; 
trace("Attempting to load", url); 
loader.load(new URLRequest(url));    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderComplete); 
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError); 
addChild(loader); 

function loaderComplete(e:Event):void {     
    trace("Successfully loaded", url);
    } function loaderIOError(e:IOErrorEvent):void {     
    trace("Failed to load", url);    
}  
    }
**编辑**

以下是我当前的源代码:

stop();


  bee.addEventListener(MouseEvent.CLICK, Click);

  function Click(event: MouseEvent): void {
      gotoAndPlay(currentFrame + 1);
  }


  bee.addEventListener(MouseEvent.CLICK, f);

  function f(e: Event): void {
      var movieArray: Array = ["howmanybees1", "howmanybees2", "howmanybees3", "howmanybees4", "howmanybees5", ];
      var loader: Loader = new Loader();
      var index: int = movieArray.length * Math.random();
      var url: String = movieArray[index] + '.swf';
      trace("Attempting to load", url);
      loader.load(new URLRequest(url));
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
      loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
      stage.addEventListener("UnloadGame", unloadGame);
      addChild(loader);


      function loaderComplete(e: Event): void {
          trace("Successfully loaded", url);
      }

      function loaderIOError(e: IOErrorEvent): void {
          trace("Failed to load", url);
      }

      function unloadGame(e: Event): void {
          trace("unloaded at last", url);
          loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaderComplete);
          loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
          loader.removeEventListener("UnloadGame", unloadGame);
          removeChild(loader);
          loader.unloadAndStop();
      }
  }
  sheepgamebtn.addEventListener(MouseEvent.CLICK, Click2);

  function Click2(event: MouseEvent): void {
      gotoAndPlay(currentFrame + 1);
  }


  sheepgamebtn.addEventListener(MouseEvent.CLICK, i);

  function i(e: Event): void {
      var movieArray: Array = ["sheep1"];
      var loader: Loader = new Loader();
      var index: int = movieArray.length * Math.random();
      var url: String = movieArray[index] + '.swf';
      trace("Attempting to load", url);
      loader.load(new URLRequest(url));
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
      loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
      stage.addEventListener("UnloadGame", unloadGame);
      addChild(loader);

      function loaderComplete(e: Event): void {
          trace("Successfully loaded", url);
      }

      function loaderIOError(e: IOErrorEvent): void {
          trace("Failed to load", url);
      }

      function unloadGame(e: Event): void {
          trace("unloaded at last", url)
          loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaderComplete);
          loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
          loader.removeEventListener("UnloadGame", unloadGame);
          removeChild(loader);
          loader.unloadAndStop();
      }
  }

加载新的swf不会影响以前加载的swf(即使使用相同的变量)。你需要告诉Flash该怎么做

完成加载内容后,您应该做三件事:

  • 将其从显示器上卸下:

    removeChild(loader);
    
  • 删除所有未被弱引用的事件侦听器:

    loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loaderIOError); 
    
  • 卸载加载程序:

    loader.unloadAndStop();
    
  • 完成这些工作后,可以重用变量并加载新内容

    编辑

    下面是让您的子swf触发卸载的示例:

    在加载SWF的主时间线内的某个地方

    在您的主swf中


    你的问题太罗嗦了。考虑编辑它只需要了解你的问题的最低限度。这样你会有更多的人走到最后。谢谢-谢谢你的提示……太好了,谢谢。但是-如何让Flash知道ext SWF已完成?我认为理想的情况是——如果孩子能自己关上——所有游戏最后都会在屏幕上播放——这似乎是一种处理将要使用的多个游戏/主权财富基金的好方法。请原谅我对AS3的理解不足——我是AS3新手,在yesrs中没有使用过Flash——这在很大程度上取决于加载的swf的性质。活动是一个很好的方式。我会更新答案给你看一个例子。哇。太棒了。我真的花了一整天的时间从各种论坛上复制代码,并对它们进行修改,试图让它们正常工作。。。你来吧。。。砰的一声,打得很好!!!难以置信的工作-谢谢。你们这些网络英雄总是在那里拯救迷失和困惑的人,这总是让我感到惊讶——网络天使……哈哈。非常感谢您-这也是我复制和粘贴的第一个代码,它没有在输出上产生任何错误。我将给自己一些时间来尝试和理解代码,以及为什么这一条特别有效:)再次感谢..嘿。这里有一点后期脚本-但我已经创建了第二个游戏-它加载良好,但不卸载。然而,第一部电影/游戏确实如此。我需要调整你的代码,上面,为第二次和后续的游戏工作吗?您确定第二个正在调度
    “UnloadGame”
    事件吗?在
    unloadGame
    方法中放置断点或跟踪语句,查看第二场比赛是否达到该断点或跟踪语句。代码不是特定于任何一个文件的。
    function unloadGame():void {
        if(stage) stage.dispatchEvent(new Event("UnloadGame"));
    }
    
    loader.load(new URLRequest(url));            
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderComplete); 
    loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError); 
    stage.addEventListener("UnloadGame", unloadGame);
    addChild(loader); 
    
    function unloadGame(e:Event):void {
        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,loaderComplete); 
        loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loaderIOError); 
        loader.removeEventListener("UnloadGame", unloadGame);
        removeChild(loader); 
        loader.unloadAndStop();
    }