多个OS /浏览器上的AS3 URLRequest本地文件

时间:2012-11-16 12:09:24

标签: actionscript-3 path request urlrequest

Greatings!

我还有一个关于在现有内容中加载.swf的问题。

在我的游戏中。我有一个介绍屏幕,我加载另一个.swf(这是一部电影)。 这一切都很好,URLRequest是这样的:

request = new URLRequest("Movie.swf");

正如我所说,这很好。但是当我将game.swf和movie.swf复制到USB记忆棒时。 (我把它们放在同一个目录中以防止其他问题)。 它似乎没有找到movie.swf。

现在我知道它与URLRequest和/或发布设置中给出的路径有关。但我不知道如何使它在同一目录中搜索 正如game.swf所在。

我希望你们能解决这个问题。

提前致谢,

马蒂。

1 个答案:

答案 0 :(得分:1)

马蒂,我相信卢卡斯的评论是正确的,这是一个安全错误。

您可以通过嵌入Movie.swf而不是使用Loader来避免此安全错误。如果你这样做,那么在编译时Movie.swf需要坐在Game.as文件的旁边,它将被包含在Game.swf中(不需要传递这两个文件,只需要Game.swf)。 / p>

语法为:

package
{
  import flash.display.Sprite;

  public class Game extends Sprite
  {

    [Embed(source="MyMovie.swf")]
      private var myMovieClass:Class;

    private var myMovie:DisplayObject;

    public function Game():void
    {
      myMovie = new myMovieClass();

      // Technically myMovie is now a Loader, and once
      // it's loaded, it'll have .content that's a
      // MovieClipLoaderAsset, and .content.getChildAt(0)
      // will be your MyMovie.swf main timeline.
    }
  }
}

或者,如果将其嵌入为mimeType =“application / octet-stream”,则可以获取SWF的字节并在现有Loader的.loadBytes()方法中使用它:

package
{
  import flash.display.Sprite;
  import flash.utils.ByteArray;

  public class Game extends Sprite
  {

    [Embed(source="MyMovie.swf", mimeType="application/octet-stream")]
      private var movieBytes:Class;

    private var myMovie:DisplayObject;

    public function Game():void
    {
      // Treat this loader the same as your current loader,
      // but don't call .load(url), call loadbytes():
      var l:Loader = new Loader();
      l.loadBytes(new movieBytes() as ByteArray);
    }
  }
}