Cómo colocar una imagen de fondo de nuestra película que se adapte al tamaño de la ventana del navegador, escalandose pero sin distorsionarse. Escribo este tip viendo una pregunta y buscando la respuesta, que aquí posteo para el disfrute de todos ustedes
El efecto sería este (Tarda un poco en cargar). Abran la url y redimensionen la ventana para ver el efecto.
El sistema es sencillo:
- Tenemos una película flash al 100% dentro del html
- La película tendrá la opción de "noscale" para que no se redimensione el contenido (sólo queremos que se redimensione el fondo)
- Tenemos un bitmap dentro de un clip al que escalamos según el tamaño de la ventana
- Cada vez que redimensionamos la ventana del navegador redimensionaremos también el clip de fondo
El código es este:
Código :
Stage.scaleMode = "noscale"; //----------------------- var StageWidth:Number = 550; var StageHeight:Number = 400; function escalaFondo() { if (Stage.width > Stage.height) { fondo._width = Stage.width; fondo._yscale = fondo._xscale; } else { fondo._height = Stage.height; fondo._xscale = fondo._yscale; } fondo._x = (StageWidth - fondo._width) / 2; fondo._y = (StageHeight - fondo._height) / 2; } //----------------------- Stage.addListener(this); this.onResize = escalaFondo; escalaFondo(); //----------------------- stop();
Todo él va en el primer fotograma de la película.
Breve explicación..
Primero utilizaremos "noscale" para que al colocar el swf al 100% dentro del html no se redimensione el contenido.
Código :
Stage.scaleMode = "noscale";
Introduciremos el tamaño de nuestra película dentro de variables.
Código :
var StageWidth:Number = 550; var StageHeight:Number = 400;
Crearemos una función que será la que redimensione el clip de fondo, que se llamará escalaFondo(). Dentro de esta función escalaremos el ancho y el alto del clip en función del ancho de la ventana Stage.
Código :
fondo._width = Stage.width; fondo._yscale = fondo._xscale;
Utilizaremos como primera medida (el alto o el ancho) la que sea más grande.
Código :
if (Stage.width > Stage.height) {
Esto es para que no nos quede un trozo sin imagen.. el lado más grande será el que tenga la vista al 100% el otro quedará recortado. Por eso es importante que la imagen que estemos utilizando sea cuadrada. Por ejemplo, la que yo he utilizado mide 1900 x 1900 px. También es importante que la imagen utilizada sea de gran tamaño (pero sin pasarse...) ya que si se escala en monitores de gran resolución puede verse pixelada.
Otro paso a dar será posicionar el clip de fondo en relación a las dimensiones de la ventana. Hacemos un calculo con el tamaño de la ventana y el de la película.
Código :
fondo._x = (StageWidth - fondo._width) / 2; fondo._y = (StageHeight - fondo._height) / 2;
Y por último generaremos un listener que ejecute esta acción cada vez que redimensionemos la ventana del navegador.
Código :
Stage.addListener(this); this.onResize = escalaFondo;
E voalá!
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por La100rra el 12 de Diciembre de 2006
Por Zguillez el 12 de Diciembre de 2006
La100rra :
si, si, 1900x1900px
quizas es un poco grande para tí, pero es que para hacer la prueba en mi monitor una imágen más pequeña pixela bastante...
Por La100rra el 12 de Diciembre de 2006
Por Zguillez el 12 de Diciembre de 2006
La100rra :
Si que lo escribí... no debiste leer mi post entero
Contestando a esto: El tamaño del bitmap a de ser similar al tamaño de resolución de pantalla al que queremos optimizar la pelicula. Si queremos que se vea bien en monitores a 1024 podemos utilizar una imágen de 1000x1000px, si queremos que a 1280x800 tambien se vea bien utilizaremos 1200x1200px etc... Con resoluciones mayores a la elegida evidentemente pixelará. Pero tambien hay que tener en cuenta el tamaño del archivo. Lo mejor es ir probando en diferentes monitores y resoluciones y ver como queda...
PD. El tamaño de la imágen a de ser cuadrado. Se podría modificar el código para que esto no tuviese que ser así, pero era más rápido asi...
Por Otaku_RzO el 15 de Diciembre de 2006
Por Ulises el 15 de Diciembre de 2006
Por La100rra el 15 de Diciembre de 2006
Por Sisco el 15 de Diciembre de 2006
2.-
3.-
Yo he intentado hacer eso con stage en flah pero que sea más dinámico, pero no me ha salido, es decir, que el centrado del flash fuera con easing. Este efecto es muy bueno. En fin lo dicho.
4.-
Por .::Manu::. el 15 de Diciembre de 2006
Por Zguillez el 15 de Diciembre de 2006
.::Manu::._blog :
No reo que sea necesario postear un .FLA
Lo único que has de hacer es crear un pelicula nueva, y en el primer fotograma colocas todo el código.
Luego creas un MovieCLip con la imágen bitmap que quieras, y le pones nombre de instancia "fondo"
Y listo
Por Sugar el 16 de Diciembre de 2006
Además que la verdad que no me tardó nada cargar... Con lo grande que es la imagen...
Por luis valencia el 24 de Diciembre de 2006
Por marcial el 06 de Enero de 2007
Por chon el 08 de Enero de 2007
Por Zguillez el 08 de Enero de 2007
chon_blog :
En la peliculña tienes un MovieClip que se llama "fondo" que es el que se escala para adaptarse a la ventana. Si en ese MovieClip en lugar de colocar un JPG colocas una animación ya tendrás un fondo animado.
Por biohazard el 15 de Enero de 2007
Por JOHNMARTIN el 23 de Febrero de 2007
Si yo redimensiono este sitio http://www.massiveattack.com/start.html veo que la imagen "realmente" se redimensiona al navegador ... pero si redimensiono el navegador con este otro sitio http://www.2advancedstudios.com/ el fondo NO se redimensiona sino que se ajusta en _x.
Entonces las preguntas son:
1. Como hago para que una imagen "realmente" se redimensione al tamño del navegador?
2. Cuál es la diferencia entre los dos sitios que referencio que hace que sus fondos en flash se comporten diferente?
Gracias.
JOHNMARTIN
Por Zguillez el 23 de Febrero de 2007
JOHNMARTIN :
La imagen si que se redimensiona realmente. Lo que yo hago es resimendionarla sin que se distorsione. Con esta línea de codigo:
Código :
calculo si la ventana es más ancha que alta o mas alta que ancha, y redimensiono la imagen para que se adapte al lado más grande:
Código :
y luego utilizo la misma escala para redimensiona el otro lado:
Código :
evidentemente parte de la imagen del lado pequeño quedará oculta, pero mejor eso que no que quede la imagen distorsionada...
Para hacer el efecto del ejemplo que dices unicamente hay que redimensionar los lados independientemente:
Código :
asi verás toda la imagen pero distorsionada, a menos de que redimensiones la ventana con unas medidas proporcionales a la imagen.
JOHNMARTIN :
Por JOHNMARTIN el 23 de Febrero de 2007
Solo me queda una última pregunta: redimensionando la imagen a lo alto (sin distorcionar la imagen) se me pierde la parte de arriba de la imagen, entonces no he podido ajustar el codigo para que la imagen se mueva libremente a lo alto y a lo ancho, PERO que la imagen quede alineada a la parte superior, para poder ver la imagen de arriba hacia abajo sin importar si se pierde de vista la parte de abajo ...
Tks.
Por adriana el 10 de Marzo de 2007
Por chon el 28 de Marzo de 2007
Por De el 09 de Abril de 2007
Por RonaldSpain el 30 de Abril de 2007
Código :
Por RonaldSpain el 30 de Abril de 2007
Por hextor el 03 de Mayo de 2007
Por urrutimeoli el 11 de Mayo de 2007
Te puedo mandar mi FLA y mi HTML para que me digas que estoy haciendo mal????
O te dejo mi mail: [email protected] y me podrías mandar un fla para ver que es lo que estoy haciendo mal????
porque puse el codigo, hice el movie clip y lo estoy visualizando como una máscara (o sea, veo de la foto únicamente lo que está sobre la película flash (de 1900 x 1900 px que posee la foto veo los 550x400 px del flash.)
Muchas gracias!!!!!
Por nah-chong el 13 de Mayo de 2007
Por javier el 22 de Mayo de 2007
gracias.
Por leisha el 23 de Mayo de 2007
porque sino se solciona poniendo 100%, y no es la idea.
asi:
http://www.helioferretti.com/
saludos!! y gracias
Por pachin p el 21 de Junio de 2007
Por Fusel el 02 de Julio de 2007
Enhorabuena y gracias, como aporte (y despues de partirme la cabeza un buen rato) añado que el codigo que tienes en el html no me funciona, pero el siguiente si:
Código :
[/quote]Saludos y gracias otra vez!
Por SrCrow el 10 de Agosto de 2007
Alguien al que le haya resultado podría poner un fla de ejemplo?
Lo he hecho exactamente igual un monton de veces y no soy capaz de que me salga. Lo que me resulta es un trozo de la imagen en la esquina superior izquierda de la pantalla, aun poniendole el swf al 100% en el html, estoy agobiao porque llevo un par de dias con el y lo que me falla tiene que ser una tonteria seguro .
Por Sisco el 10 de Agosto de 2007
http://www.tutorio.com/media/flash/liquid-demo.html
Por Victor el 23 de Agosto de 2007
Tengo una duda, a este ejemplo le quiero añadir una barra de menú, q se encuentre siempre en la parte superior del navegador. Dando igual la definición de pantalla. ¿Cómo puedo conseguir eso?
Gracias de antemano.
Por Sisco el 23 de Agosto de 2007
Código :