外部 SWF をロードしようとするアプリケーションがあります。したがって、次のようになります。
- 私のアプリケーション: ステージの寸法は 768x1280 です。ScaleMode = EXACT_FIT。
- 外部 SWF: ステージが 800x600 の別のアプリケーションです。ScaleMode = 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 のサイズが変更されることはありません。それは常に固定されたままです (寸法をトレースすると、視覚的には 320x240 に見えますが、常に 800x600 になります)。メイン アプリケーションのステージの幅を広げると、この小さなクリップが消えます。
討論:
元の Stage のサイズは 800 で、これはアプリケーションの元の Stage (768) よりも大きいことはわかっていますが、サイズ変更を行うときは、外部 SWF の Stage をコンテナーに収める必要があると思います。装着されていますが、外部SWFの一部が見られません。外部 SWF ステージの幅がアプリケーションの幅よりも大きいことを Flash Player が記憶しているようです...
前もって感謝します。