Estoy usando cargas externas para las distintas secciones del sitio. El problema viene cuando cargo un SWF que tiene medidas mayores, el contenedor (Loader) se desplaza para quedar centrado.
Pongo imágenes para ilustrar lo que digo:
Acá lo que dice "Link 1" es el SWF cargado externamente, este está OK.
Ahora muestro otra sección, esta carga mal:
Este es el SWF que se carga en la imágen anterior. Vean que puse un cuadrado negro que se sale del canvas para probar:
En esta otra se ve otro desplazamiento, en este caso solamente vertical. Tiene contenido enmascarado (donde está el cuadro rojo que agregué con Photoshop), por lo que hacer esto no es solución:
Estoy usando Tweenlite (http://www.greensock.com/tweenlite/) para las transiciones con el Plugin "TransformAroundCenterPlugin" para hacer un zoom in / zoom out con escalado desde el centro.
Código :
package com { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.net.URLRequest; import flash.utils.setTimeout; import com.util.Variables; import com.greensock.*; import com.greensock.easing.*; import com.greensock.plugins.*; public class Main extends Sprite { private var seccion_loader:Loader; private var seccion_req:URLRequest; public function Main() { addEventListener(Event.ADDED_TO_STAGE, init); TweenPlugin.activate([TransformAroundCenterPlugin]); } private function init(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, init); // CONTENEDOR DE SECCIONES seccion_loader = new Loader(); addChild( seccion_loader ); seccion_loader.x = 25; seccion_loader.y = 125; seccion_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, cargaProceso); seccion_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, cargaCompleta); // LISTENERS MENU menu.link_1.addEventListener(MouseEvent.CLICK, link_1); menu.link_2.addEventListener(MouseEvent.CLICK, link_2); menu.link_3.addEventListener(MouseEvent.CLICK, link_3); menu.link_4.addEventListener(MouseEvent.CLICK, link_4); menu.link_5.addEventListener(MouseEvent.CLICK, link_5); menu.link_6.addEventListener(MouseEvent.CLICK, link_6); // SECCION_INICIAL lanzarLoaderInicial(); } private function cargaCompleta(e:Event):void { /* var target_mc:Loader = e.currentTarget.loader as Loader; target_mc.y = 125; trace(target_mc.y); */ zoomIn(); } private function zoomOut(seccion:String):void { if (seccion_loader.content) { TweenLite.to(seccion_loader, 0.3, { transformAroundCenter:{scaleX:0, scaleY:0}, ease: Back.easeIn, onComplete: lanzarLoader, onCompleteParams: [seccion] } ); }else { lanzarLoader(seccion); } } private function lanzarLoaderInicial():void { seccion_req = new URLRequest(Variables.SECCION_X_DEFECTO); seccion_loader.load(seccion_req); } private function lanzarLoader(seccion:String):void { seccion_req = new URLRequest(seccion); seccion_loader.unload(); seccion_loader.load(seccion_req); } private function zoomIn():void { TweenLite.to(seccion_loader, 0.3, { transformAroundCenter: { scaleX:1, scaleY:1 }, ease: Back.easeOut, onComplete:acomodar } ); } private function acomodar():void { //seccion_loader.y = Variables.Y_VENTANA; } private function cargaProceso(e:ProgressEvent):void { var porcentaje:Number = Math.round(e.bytesLoaded / e.bytesTotal * 100); } private function link_1(e:MouseEvent):void{ zoomOut("link_1.swf"); } private function link_2(e:MouseEvent):void{ zoomOut("link_2.swf"); } private function link_3(e:MouseEvent):void{ zoomOut("link_3.swf"); } private function link_4(e:MouseEvent):void{ zoomOut("link_4.swf"); } private function link_5(e:MouseEvent):void{ zoomOut("link_5.swf"); } private function link_6(e:MouseEvent):void{ zoomOut("link_6.swf"); } } }
Cualquier ayuda que me puedan dar es bienvenida, mientras sigo haciendo pruebas.
Saludos!