Centrar clip de película
Hola, estoy haciendo una web en flash con diseño web líquido. El fondo de la web que es una imagen se adapta perfectamente a las dimensiones del navegador, pero quiero cargar un clip (formulario_mc) que se centre según las dimensiones del navegador pero no se me centra.
Estoy utilizando este código
Stage.align = "TL";
Stage.scaleMode = "noScale";
var miListener:Object = new Object();
miListener.onResize = function() {
fondo_mc._width = Stage.width;
fondo_mc._height = Stage.height;
};
Stage.addListener(miListener);
miListener.onResize();
formulario_mc._x = Stage.width/2;
formulario_mc._y = Stage.height/2;
Podéis ver de que os hablo aquí: http://bamer.es/nuno/preview.swf
Mi idea es centrar el formulario según las dimensiones de la ventana del navegador, pero no se adapta si pongo la ventana mas pequeña.
He probado tanto meterlo dentro de la función como sacarlo como veis ahora, y nada.
Gracias por vuestra ayuda.
handepora
Vaya, qué cerquita jejeje, no tenía ni idea.
Entonces, si el movieclip "cargador" (yo lo llamaría "contenedor", me resulta más clara cual es su función llamándolo así) tiene siempre el mismo tamaño prueba con:
cargador._x = (Stage.width-996)/2;
cargador._y = (Stage.height-578)/2;
Las siguientes líneas te sobran, son redundantes, ya que al crear un movieClip con createEmptyMovieClip ya te lo está creando en esta posición:
cargador._x = 0;
cargador._y = 0;
Lo de usar MovieclipLoader no es necesario pero yo lo uso siempre (loadClip en vez de loadMovie) porque te permite controlar el proceso de carga, saber cuándo está cargado, automatizar acciones, etc
A ver si te funciona ahora.
Esta tarde me voy a Italia una semana, no voy a poder mirar el correo estos días, así que buena suerte!
bamer
Cierto es, se me olvidó revisar el código. Y si, es AS2. Probaré con
cargador._x = Math.round((stage.stageWidth-cargador._width)/2);
cargador._y = Math.round((stage.stageHeight-cargador._height)/2);
El movieclip cargador es un clip vacio que su única función es la de cargar las películas externas. Todas las películas van a tener las mismas dimensiones (996 x 578px), y no uso MovieclipLoader, solo uso el código que ves. ¿Crees que me hace falta algo?
Si ya con esto no me funciona me veo quedando contigo en El Espartal para que me expliques, jajaja, he visto que tienes el estudio en Espartinas; en Villanueva vivo yo.
Gracias de nuevo Juan!
handepora
Me parece que estás mezclando AS2 y AS3:
Para posicionar el movieclip tienes que conocer sus dimensiones, podrías por ejemplo llamar a miListener.onResize una vez que el movieclip está cargado (en el onLoadInit si usas MovieclipLoader)cargador.x = Math.round((stage.stageWidth-cargador.width)/2);
Si estás con AS2 como creo, no sería .x sino ._x, stage.stageWidth sino Stage.width y _width en vez de widthcargador.y = Math.round((stage.stageHeight-cargador.height)/2);
Es lo que me ocurre, a ver qué tal
bamer
Hola, gracias por tu ayuda pero no me funcionó. He modificado el código dejándolo así:
import mx.transitions.Tween;
import mx.transitions.easing.*;
mov_tw = function (clip, prop, fin) {
new Tween(clip, prop, Strong.easeOut, clip[prop], fin, 25, false);
};
Stage.align = "TL";
Stage.scaleMode = "noScale";
this.createEmptyMovieClip("cargador",this.getNextHighestDepth());
cargador._x = 0;
cargador._y = 0;
var miListener:Object = new Object();
miListener.onResize = function() {
fondo_mc._width = Stage.width;
fondo_mc._height = Stage.height;
//cargador.x = (stage.stageWidth-cargador.width)/2;
//cargador.y = (stage.stageHeight-cargador.height)/2;
cargador.x = Math.round((stage.stageWidth-cargador.width)/2);
cargador.y = Math.round((stage.stageHeight-cargador.height)/2);
//mov_tw(cargador._x = Math.round(Stage.width-cargador._width)/2);
//mov_tw(cargador._y = Math.round(Stage.height-cargador._height)/2);
};
Stage.addListener(miListener);
miListener.onResize();
Como ves por las líneas comentadas, he probado de distintas maneras pero lo único que me sale es lo que podéis ver aquí http://www.bamer.es/nuno/home.html . No entiendo porque no se me centra el el contenido que se carga en el clip cargador.
El clip cargador que creo totalmente vacío a través de createEmptyMovieClip tiene la función de cargar cada una de las películas al pulsar los botones.
Se me está escapando algo?? Gracias!
handepora
Si el punto de registro de formulario_mc lo tienes en la esquina superior izquierda, tienes que restar el ancho (o el alto) del movieclip al ancho (o alto) del Stage:
formulario_mc._x = Math.round(Stage.width-formulario_mc._width)/2;
formulario_mc._y = Math.round(Stage.height-formulario_mc._height)/2;
El Math.round no es obligatorio, es para redondear las coordenadas en caso de que no coincidan con píxeles exactos.
Espero que te sirva