Foros del Web » Creando para Internet » Flash y Actionscript »

escalado proporcional del fondo

Estas en el tema de escalado proporcional del fondo en el foro de Flash y Actionscript en Foros del Web. Buenas, saludos para todos. Tengo el siguiente problemita que me esta comiendo la cabeza ya. Tengo creada una animacion con un mc que actua de ...
  #1 (permalink)  
Antiguo 25/09/2009, 12:04
 
Fecha de Ingreso: junio-2009
Mensajes: 85
Antigüedad: 11 años, 4 meses
Puntos: 1
escalado proporcional del fondo

Buenas, saludos para todos.

Tengo el siguiente problemita que me esta comiendo la cabeza ya.

Tengo creada una animacion con un mc que actua de fondo, el cual tiene que ocupar todo el ancho y alto de la pagina, pero proporcionalmente. El script que utilice incialmente es el de un tutorial de otra web, sobre fondo bitmap, pero me comia una parte de la foto y no pude adaptarlo para que deje de hacerlo.
Entonces seguí buscando, y mezcle ese codigo con otro para llegar a hacer lo que yo queria. En principio funciona perfecto. El unico problema es que la imagen recien se escala al ancho o alto del navegador solo cuando cambio el tamaño del navegador, no antes.
O sea, cuando abro la pagina, el mc de fondo no cubre todo, pero una vez que cambio el tamaño del navegador, empieza a funcionar perfectamente, aunque vuelva a maximizar la pantalla.
Creo que el problema debe estar en que no esta bien declara la funcion para que se ejecute al inicio, pero no pude lograr que lo haga.

Les dejo el codigo:

Cita:
Stage.align = "TL"
Stage.scaleMode = "noscale";
//-----------------------
function escalaFondo()
{
text_info = Stage.width+" x "+Stage.height;
menufondo._width = Stage.width;
menufondo._y = Stage.height-menufondo._height-20;
menufondo._x = stage.width-menufondo._width;
// aqui haremos los calculos, para eso creamos una variables con las medidas originales y otro con las medidas finales:
ancho1 = fondo._width;
alto1 = fondo._height;
ancho2 = Stage.width;
alto2 = (ancho2 * alto1) / ancho1;
// si el nuevo valor del alto, es mayor que el valor maximo de la pantalla, recalculamos el tamaño poniendo el alto como maximo
if (alto2 > Stage.height) {
alto2 = Stage.height;
ancho2 = (ancho1 * alto2) / alto1;

}
// aqui asignamos los valores que calculamos al intro
fondo._width = ancho2;
fondo._height = alto2;
fondo._x = (Stage.width - fondo._width) / 2;
fondo._y = (Stage.height - fondo._height) / 2;
}
//-----------------------
onLoad.escalaFondo();
onLoad = function() {
precargador_mcl.loadClip("foto1.swf", cuerpo);
};
Stage.addListener(this);
this.onResize = escalaFondo;
escalaFondo();
stop();
referencias: text_info = es un texto dinamico que muestra el tamaño real del ancho y el largo del navegador

menufondo = una barra que actua de menu, que esa se posiciona perfecto, no hay problemas con eso

fondo = el mc de fondo que se escala proporcionalmente

foto1.swf = es un swf externo que se carga en el mc "fondo" (dentro de ese mc, hay otro que es el que realmente carga el fondo, ya que dentro de "fondo", hay una galeria de fotos)

Gracias a todos de antemano!

(Si alguien puede optimizar esto para que los que necesiten este mismo efecto con su fondo lo puedan utilizar, seria mejor todavia!)
  #2 (permalink)  
Antiguo 25/09/2009, 12:17
Avatar de Eskombro  
Fecha de Ingreso: septiembre-2009
Ubicación: Colombia
Mensajes: 437
Antigüedad: 11 años, 1 mes
Puntos: 22
Respuesta: escalado proporcional del fondo

Si claro, lo que pasa es que debes tener la imagen insertada en el escenario, con un tamaño específico. Y el código solo le dice que le cambie el tamaño onRezise, por lo que solo lo cambia cuando cambias el tamaño del navegador.

Puedes cambiar eso, y decirle que lo haga con un enterframe, y así lo hará desde el rpincipio y todo el tiempo.

Espero te sirva.
Eskombro
  #3 (permalink)  
Antiguo 25/09/2009, 12:27
 
Fecha de Ingreso: junio-2009
Mensajes: 85
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: escalado proporcional del fondo

Eskombro sos un genio!! hace 1 día entero que estoy trabado en esa parte y no le podia encontrar solucion!

Bueno, demás esta decir que el codigo (si bien fue armado de acuerdo a diferentes tutoriales), es libre de usarlo cualquiera que lo necesite, y si puedo ayudar, aqui estare

Muchisimas gracias Eskombro por la rapida respuesta, y espero en algun momento poder devolverte el favor

Saludos!
  #4 (permalink)  
Antiguo 25/09/2009, 12:32
Avatar de Eskombro  
Fecha de Ingreso: septiembre-2009
Ubicación: Colombia
Mensajes: 437
Antigüedad: 11 años, 1 mes
Puntos: 22
Respuesta: escalado proporcional del fondo

No hay ningún problema. Me alegra que te funcionara. Para eso estamos todos aquí.

Si me quieres devolver el favor, vuelve aquí y aporta lo que sabes ;)

Saludes
  #5 (permalink)  
Antiguo 03/10/2009, 20:40
 
Fecha de Ingreso: septiembre-2009
Mensajes: 12
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: escalado proporcional del fondo

Gracias por este codigo ! No lo borres !
  #6 (permalink)  
Antiguo 11/11/2009, 03:46
 
Fecha de Ingreso: diciembre-2008
Mensajes: 11
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: escalado proporcional del fondo

hola a todos, una preguntita más, si queremos que a partir de un minimo de ancho y alto ya no escalara más?

alguien sabe como modificar la funcion para pasarle dos parametros minimo_alto y minimo_ancho al escalaFondo.

Lo he estado intentando y no lo he conseguido

muchas gracias
  #7 (permalink)  
Antiguo 11/11/2009, 22:12
Avatar de Eskombro  
Fecha de Ingreso: septiembre-2009
Ubicación: Colombia
Mensajes: 437
Antigüedad: 11 años, 1 mes
Puntos: 22
Respuesta: escalado proporcional del fondo

En realidad no sabría configurar un máximo con un parámetro específico. Pero puedes sencillamente crear una función que lo haga. Por ejemplo, no quieres que pase de 950px. Entonces le dices

Código actionScript:
Ver original
  1. if(fondo._width>950){
  2. fondo._width=950;
  3. }

Con eso ya está

Un saludo
Eskombro
__________________
Blog AS3 Ideas -> Programación en ActionScript 3
________
Esk Games | Free online flash games
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:35.