我有一个应用程序,我尝试加载外部 SWF。所以,我们有:
- 我的应用:舞台的尺寸为 768x1280。缩放模式 = EXACT_FIT。
- 外部 SWF:这是另一个应用程序,其阶段为:800x600。缩放模式 = EXACT_FIT。
问题是,尽管我应用“scaleX、scaleY”、更改其宽度等,但外部 SWF 并未修改其大小。
我还尝试将其插入 Canvas 容器中(如“如何调整外部 SWF 的大小以适合容器?”),但它没有解决我的问题。
有趣的代码是当我的应用程序加载外部 SWF 时:
private function onLoadedApp( evt:Event ):void{
stage.scaleMode = StageScaleMode.EXACT_FIT;
trace("Loading Application..");
var loaderInfo:LoaderInfo = evt.target as LoaderInfo;
loaderInfo.removeEventListener( Event.COMPLETE, onLoadedApp);
trace(loaderInfo.loader.content);
var swfApplication:SpriteUIComponent = new SpriteUIComponent(evt.target.loader.content );
if( SWFContainer.width < swfApplication.explicitWidth ){
var coef:Number = SWFContainer.width/swfApplication.explicitWidth;
swfApplication.scaleX = coef;
swfApplication.scaleY = swfApplication.scaleX;
}
SWFContainer.addElement(swfApplication);
}
我也尝试通过 SWFLoader 来完成此操作,但尽管我添加了“scaleContent”参数,但 external.swf 的内容并没有改变其原始大小。
我得到的视觉结果:
外部 SWF 加载到合适的位置,并且“似乎”具有 320x240 的亮度。但它的宽度有点被裁剪,因为如果我拉伸 Flash Player,我就能看到外部 swf 舞台的其余部分。此外,尽管我收缩/拉伸 Flash Player,但外部 SWF 的大小从未调整。它始终保持固定(如果我追踪其尺寸,我总是得到 800x600,尽管我在视觉上看到 320x240) - 如果我增加主应用程序的舞台宽度,这个小剪辑就会消失。
讨论:
我知道原始 Stage 的尺寸是 800,这比我的应用程序的原始 Stage (768) 大,但我认为,当我调整大小时,外部 SWF 的 Stage 必须安装在容器中。它已安装,但看不到外部 SWF 的一部分。就好像 Flash Player 记得外部 SWF 舞台的宽度大于我的应用程序的宽度......
提前致谢。
即使将scaleContent 设置为“true”,您仍然需要为SWFLoader 控件设置精确的高度和宽度,以便它尝试调整内部SWF 的大小。 scaleContent 所做的一切不是以常规或拉伸尺寸显示 SWF,如果需要,它还会放大 SWF,甚至不只是缩放以保留原始 SWF 的比例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)