1

我正在为自己创建一个投资组合网站,并希望将一个简单的 Flash 游戏的 swf 嵌入到我的主 Flash 文件中。我的问题是,当我使用此代码将 swf 放入我的主 flash 文件时,它没有保持正确的 swf 尺寸并显示舞台之外的东西。我好像想不通!任何帮助深表感谢!谢谢。

这是我的代码。(我将 Flash CS3 与 AS3 一起使用。)

var my_Loader:Loader = new Loader();

var my_url:URLRequest=new URLRequest("piggybankgame.swf");

my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading);
my_Loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

my_Loader.load(my_url);

function finishLoading(loadEvent:Event) {
    addChild(loadEvent.currentTarget.content);
}
4

3 回答 3

2

如果我的理解正确,这与 Flash 游戏 SWF 的创建方式有关。最有可能的是,它是在不关心舞台边界之外发生的事情的情况下构建的。

一个常见的误解是,由 SWF 宽度和高度定义的矩形是裁剪边界。它不是。如果显示 SWF 的窗口足够大以显示它,则超出此边界的任何内容都将可见。当在您的操作系统中调整独立 Flash Player 窗口的大小时,或者将 SWF 嵌入到 HTML 页面中且宽度和高度设置为大于 SWF 中定义的值时(例如,从 Flash CS3/CS4 发布时),也会发生这种情况。

如果您想像游戏一样将内容加载到更大尺寸的 SWF 中,并且只显示在其舞台尺寸内的游戏 SWF 部分,则需要对其进行遮罩。

var loader : Loader = new Loader();
loader.load(new URLRequest('my320x240game.swf'));

var gameMask : Shape = new Shape;
gameMask.graphics.beginFill(0xffcc00);
gameMask.graphics.drawRect(0, 0, 320, 240);

loader.mask = gameMask;
this.addChild(loader);

这将创建一个矢量形状(一个 320x240 矩形),用作加载程序显示对象的裁剪蒙版。如果您熟悉蒙版,希望很容易看出这意味着任何延伸到 320x240 矩形之外的东西都将变得不可见。

当然,有更好的方法来安排代码,但这有望让你朝着正确的方向前进。

于 2009-12-20T19:09:39.607 回答
0

我认为您可以将 Loader 添加到父显示对象。例如,

var gameSwf:Loader = new Loader();
gameSwf.load(new URLRequest("piggybankgame.swf"));
gameSwf.x = 100;
gameSwf.y = 100;
gameSwf.width = 320;
gameSwf.height = 200;
//Maybe make it visible of something     
gameSwf.contentLoaderInfo.addEventListener(Event.COMPLETE, gameLoaded);
gameSwf.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
addChild(gameSwf);

我知道这在带有 SWFLoader 类的 Flex 3 中有效,我相信这是 Flex 的等价物。

于 2009-12-18T00:38:01.263 回答
0

加载您的 swf 后,您必须将其大小设置为您想要的大小 =>

function finishLoading(loadEvent:Event) {
 var dob:DisplayObject= loadEvent.currentTarget as DisplayObject;
 // or
 // var dob:Loader = loadEvent.currentTarget as Loader;
 addChild(dob);
 dob.width=myWidth;
 dob.height=myHeight; 
}

当然,您正在加载的 swf 可以使用您传递的宽度和高度来做它想做的事情。

于 2009-12-18T00:41:47.840 回答