加载到fla中时swf尺寸的问题

时间:2009-12-18 00:28:53

标签: actionscript-3 flash-cs3

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

这是我的代码。(我正在使用带有AS3的Flash CS3。)

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);
}

3 个答案:

答案 0 :(得分:2)

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

一个常见的误解是SWF宽度和高度定义的矩形是裁剪边界。它不是。如果显示SWF的窗口足够大以显示,则任何超出此边框的内容都将可见。在操作系统中调整独立Flash Player窗口的大小时,或者将SWF嵌入宽度和高度设置为大于SWF中定义的值的HTML页面时(例如,从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矩形之外的东西都会变得不可见。

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

答案 1 :(得分: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);

我知道这个事实在Flex 3中使用的是SWFLoader类,我认为它与Flex相当。

答案 2 :(得分: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可以用你想要的宽度和高度来做它想要的东西。