Greatings!
我还有一个关于在现有内容中加载.swf的问题。
在我的游戏中。我有一个介绍屏幕,我加载另一个.swf(这是一部电影)。 这一切都很好,URLRequest是这样的:
request = new URLRequest("Movie.swf");
正如我所说,这很好。但是当我将game.swf和movie.swf复制到USB记忆棒时。 (我把它们放在同一个目录中以防止其他问题)。 它似乎没有找到movie.swf。
现在我知道它与URLRequest和/或发布设置中给出的路径有关。但我不知道如何使它在同一目录中搜索 正如game.swf所在。
我希望你们能解决这个问题。
提前致谢,
马蒂。
答案 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);
}
}
}