grow - Flex: Imposible cambiar el tamaño del contenido externo del SWF cargado
propiedad flex basis (3)
Tengo una aplicación donde trato de cargar un archivo SWF externo. Entonces tenemos:
- Mi aplicación: las dimensiones del escenario son 768x1280. ScaleMode = EXACT_FIT.
- SWF externo: es otra aplicación donde su etapa es: 800x600. ScaleMode = EXACT_FIT.
El problema es que el SWF externo no modifica su tamaño aunque aplico "scaleX, scaleY", cambie su ancho y así sucesivamente. También traté de insertarlo en un contenedor Canvas (como "Cómo cambiar el tamaño de un SWF externo para que quepa en un contenedor"), pero no resolvió mi problema. La pieza interesante de código es cuando mi aplicación carga el archivo SWF externo:
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);
}
También traté de hacerlo a través de SWFLoader, pero el contenido de external.swf no cambia su tamaño original aunque agregué el parámetro "scaleContent".
Resultados visuales que obtuve:
El SWF externo se carga en la posición adecuada y "parece" tener 320x240 dim. Pero su ancho es un poco recortado, ya que si estiro el Flash Player logro ver el resto de la etapa del swf externo. Además, el SWF externo nunca se redimensiona aunque reduzco / estiro el Flash Player. Siempre permanece fijo (si trazo sus dimensiones, siempre obtengo 800x600, aunque visualmente veo 320x240) - Si aumento el ancho de la etapa de la aplicación principal, este pequeño clip desaparece.
Discusión:
Sé que las dimensiones originales de la etapa son 800, y esto es mayor que la etapa original de mi aplicación (768), pero creo que cuando haga el cambio de tamaño, la etapa externa de SWF debe instalarse en el contenedor. Está ajustado, pero una parte del SWF externo no se ve. Es como si Flash Player recordara que el ancho de SWF Stage externo era mayor que el de mi aplicación ...
Gracias por adelantado.
Incluso con scaleContent establecido en "verdadero", aún necesita establecer un alto y un ancho exactos para el control SWFLoader, incluso para intentar cambiar el tamaño del SWF interno. Todo lo que scaleContent hace es en lugar de mostrar el SWF en tamaños normales o estirados, también escala el SWF si es necesario, y si no solo lo escala para mantener la proporción del SWF original.
No creo que el problema sea con su ScaleMode. Solo puede haber una etapa por jugador flash. La propiedad "etapa" de su SWF ''externo'' hace referencia al escenario de su SWF ''aplicación'' después de que se agrega a la lista de visualización. Si el archivo SWF se carga y no se agrega a la lista de visualización, la propiedad ''etapa'' del SWF cargado será igual a ''nulo''. Configurar el scaleMode de escenario dentro de su SWF externo no determinará cómo se escalará una vez cargado en otro SWF.
Además, probablemente cambie el tamaño del SWFContainer, no del SWF en sí ... es por eso que las propiedades de ancho y alto de SWF son siempre de 800x600. No estoy seguro de si esto es lo que estás pidiendo, pero por lo que entiendo, es posible que necesites crear un oyente de eventos de cambio de escenario.
¿Has intentado utilizar un efecto de escala en "SWF externo"?