Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 swf加载到fla时的尺寸问题_Actionscript 3_Flash Cs3 - Fatal编程技术网

Actionscript 3 swf加载到fla时的尺寸问题

Actionscript 3 swf加载到fla时的尺寸问题,actionscript-3,flash-cs3,Actionscript 3,Flash Cs3,我正在为自己创建一个投资组合网站,并希望在我的主flash文件中嵌入一个简单的flash游戏swf。我的问题是,当我使用此代码将swf放入我的主flash文件时,它没有保持正确的swf维度,并且显示舞台之外的内容。我好像不明白!非常感谢您的帮助!谢谢 这是我的代码。(我正在使用Flash CS3和AS3。) 我认为您可以将加载程序添加到父显示对象。比如说, var gameSwf:Loader = new Loader(); gameSwf.load(new URLRequest("piggyb

我正在为自己创建一个投资组合网站,并希望在我的主flash文件中嵌入一个简单的flash游戏swf。我的问题是,当我使用此代码将swf放入我的主flash文件时,它没有保持正确的swf维度,并且显示舞台之外的内容。我好像不明白!非常感谢您的帮助!谢谢

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


我认为您可以将加载程序添加到父显示对象。比如说,

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的等价物。

加载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可以根据你通过的宽度和高度做它想做的事情。

如果我理解正确,这与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矩形之外延伸的任何东西都将不可见


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

是的,您可以直接将加载程序添加到其中,这是一种更好的方法。这正是我的问题所在。因为我之前已经将它们嵌入到html文件中,并且没有问题,所以我只是恢复了导出的swf维度是裁剪边界。我删掉了我原来的游戏,现在它运行得很好。谢谢你的帮助。事实上,理查德,如果你能帮助我,我还有一个问题。当你点击游戏的链接时,它会显示得很好,现在我正试图为人们导航到其他页面时摆脱它做准备。我的问题是,如果一开始它还没有被添加到后台,我该如何引用gameSwf在代码中的所有其他链接上删除它?我肯定这是一个非常愚蠢的问题,但我不能解决它。谢谢。只需使用gameSwf.unloadAndStop()卸载内容并停止其中的所有播放,使用gameSwf.parent.removeChild(gameSwf)将其从显示列表中删除即可。Flash的unloadAndStop有问题。它放弃了错误1061:调用一个可能未定义的方法unloadAndStop,通过静态类型flash的引用。display:Loader。gameSwf.parent.removeChild(gameSwf)正在工作,但我仍然可以听到游戏中的音乐。再次感谢你的帮助!您使用的Flash Player版本是什么?在Flash Player 10中添加了Loader.unloadAndStop()。它就是为了这个原因而创建的。如果没有unloadAndStop(),停止加载的SWF中的音乐和其他游戏元素的唯一方法是使用游戏SWF提供的一些API,或者循环所有显示对象并停止它们。但这并不一定会停止声音。
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);