Flex / AS3:如何在另一个SWF中调整外部SWF内容的大小

时间:2011-05-11 16:54:54

标签: flex actionscript-3 flash

  

可能重复:
  Flex: Impossible to resize an external loaded SWF.

我重新提出了上一个问题,抱歉。我有一个应用程序,我尝试加载外部SWF。所以,我们有:

  • 我的应用:舞台的尺寸为768x1280。 ScaleMode = EXACT_FIT
  • 外部SWF:这是另一个应用程序,其阶段是:800x600。 ScaleMode = EXACT_FIT

我尝试将外部SWF放入我的应用程序中,放在320x240 Canvas容器中。 有趣的代码是当我的应用程序加载外部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);}

我得到的视觉效果:

外部SWF加载在合适的位置,“看起来”是320x240暗淡。但它的宽度有点裁剪,因为如果我拉伸Flash Player,我会看到外部swf的其余部分。此外,虽然我缩小/拉伸Flash Player,但外部SWF永远不会调整大小。它总是保持固定(如果我追踪它的尺寸,我总是得到800x600,虽然我在视觉上看到320x240) - 如果我增加主应用程序的舞台宽度,这个小剪辑消失。

讨论:

我知道舞台的原始尺寸是800,这比我的应用程序的原始阶段(768)要大,但我认为,当我进行调整大小时,外部SWF的舞台必须安装在容器中。它适合,但没有看到外部SWF的一部分。就像Flash Player记得外部SWF Stage的宽度大于我应用程序的宽度......

问候。

0 个答案:

没有答案