0

Greatings!

既存のものの中に.swfをロードすることに関してさらに別の質問があります。

私のゲームでは。別の.swf(ムービー)をロードする紹介画面があります。これはすべて正常に機能し、URLRequestは次のとおりです。

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

私が言ったように、これはうまくいきます。ただし、game.swfとmovie.swfをUSBスティックにコピーすると。(他の問題を防ぐために、それらを同じディレクトリに配置しました)。movie.swfが見つからないようです。

これで、URLRequestや公開設定で指定されたパスに関係していることがわかりました。しかし、game.swfが入っているのと同じディレクトリで検索するようにこれを作成する方法がわかりません。

皆さんがこの問題に対する答えを持っていることを願っています。

前もって感謝します、

マティ。

4

1 に答える 1

1

Matti、Lukaszのコメントはセキュリティエラーであるということについて正しいと思います。

ローダーを使用する代わりにMovie.swfを埋め込むことで、このセキュリティエラーを回避できます。これを行う場合、コンパイル時にMovie.swfはGame.asファイルの隣に配置する必要があり、Game.swfに含まれます(両方のファイルを配信する必要はなく、Game.swfのみ)。

構文は次のとおりです。

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のバイトを取得して、既存のローダーの.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);
    }
  }
}
于 2012-11-16T15:32:00.130 に答える