Comunidad de diseño web y desarrollo en internet online

Problema con clase Stage y condicionales.

Citar            
MensajeEscrito el 12 Feb 2009 07:06 pm
Hola estimados, recurro a su sabiduría en ActionScript ya que por mi cuenta no he podido solucionar mi problema, y las herramientas de búsqueda tampoco me han aclarado el panorama.

Mi asunto es el siguiente, hice tres ejemplos para poder explicarme lo mas claro posible. Con los dos primeros no hay ningún problema, el problema está en el tercer ejemplo, donde intento combinar los dos primeros… aquí voy:

Ejemplo 1: click para ver.
Esto sería un flash donde uso Stage.scaleMode = "noScale"; para que no se escale, y el movieClip area_mc esta centrado en el Stage. El x-y "cero" de area_mc esta en la esquina izquierda arriba.

Código:

Código :

Stage.scaleMode = "noScale";
Stage.align = "TL";

area_mc._y = Stage.height/2-area_mc._height/2;
area_mc._x = Stage.width/2-area_mc._width/2;

var listenerStage = new Object();
listenerStage.onResize = function() {
   area_mc._y = Stage.height/2-area_mc._height/2;
   area_mc._x = Stage.width/2-area_mc._width/2;
};
Stage.addListener(listenerStage);


Ejemplo 2: click para ver.
Aquí la diferencia está en Stage.scaleMode = "showAll"; para que se cambie el tamaño sin perder las proporciones del diseño. No asigno Stage.align para que esté centrado de en navegador.

Código:

Código :

Stage.scaleMode = "showAll";

area_mc._y = Stage.height/2-area_mc._height/2;
area_mc._x = Stage.width/2-area_mc._width/2;

var listenerStage = new Object();
listenerStage.onResize = function() {
   area_mc._y = Stage.height/2-area_mc._height/2;
   area_mc._x = Stage.width/2-area_mc._width/2;
};
Stage.addListener(listenerStage);


Ejemplo 3: click para ver.
En el ejemplo 2 el problema es que si el usuario achica mucho el navegador se achica mucho la película, entonces pensé en usar una condicional, para que si el Stage es menor a 640 x 480 (por ejemplo) que la película deje de escalarse. Y bueno... la verdad es que no funciona como esperaba...

Código:

Código :

if (Stage.width<640 || Stage.height<480) {
   Stage.scaleMode = "noScale";
   Stage.align = "TL";
} else if (Stage.width>=640 || Stage.height>=480) {
   Stage.scaleMode = "showAll";
}

area_mc._y = Stage.height/2-area_mc._height/2;
area_mc._x = Stage.width/2-area_mc._width/2;

var listenerStage = new Object();
listenerStage.onResize = function() {
   area_mc._y = Stage.height/2-area_mc._height/2;
   area_mc._x = Stage.width/2-area_mc._width/2;

   if (Stage.width<640 || Stage.height<480) {
      Stage.scaleMode = "noScale";
      Stage.align = "TL";
   } else if (Stage.width>=640 || Stage.height>=480) {
      Stage.scaleMode = "showAll";
   }
};
Stage.addListener(listenerStage);


Si ven el tercer ejemplo, prueben achicar y agrandar el navegador para ver, que no pasa nada parecido a lo que buscaba, y no me doy cuenta donde le estoy errando. Como ven la condicional también esta dentro del listener para que esta sea evaluada al cambiar de tamaño el Stage.

Ya he probado muchas formas de escribirlo y nunca pasa lo que quiero. Espero alguien pueda ayudarme a solucionar esto. Espero haberme explicado bien.

Muchas gracias.

Por yosoychi

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Feb 2009 07:51 pm
si cambias el stage a showall entonces ya no toma los valores de la ventana puedes escalar el mc segun el tamaño de la ventana

Código ActionScript :

Stage.align = "TL";
Stage.scaleMode = "noScale";
aw = area_mc._width;
ah = area_mc._height;
sw = Stage.width;
sh = Stage.height;
test = "w:"+Stage.width+", h:"+Stage.height;
area_mc._y = Stage.height/2-area_mc._height/2;
area_mc._x = Stage.width/2-area_mc._width/2;
var listenerStage = new Object();
listenerStage.onResize = function() {
   if (Stage.width<640 || Stage.height<480) {
      area_mc._width = aw;
      area_mc._height = ah;
   } else {
      area_mc._width = aw*Stage.width/sw;
      area_mc._height = ah*Stage.height/sh;
   }
   test = "w:"+Stage.width+", h:"+Stage.height;
   area_mc._y = Stage.height/2-area_mc._height/2;
   area_mc._x = Stage.width/2-area_mc._width/2;
};
Stage.addListener(listenerStage);

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

firefox
Citar            
MensajeEscrito el 12 Feb 2009 11:25 pm
Muchas gracias Nasho por responderme...

Estuve probando tu código, y bueno no es exactamente lo que busco ya que si bien vuelve a su tamaño original cuando el Stage es menor de 640 x 480, cuando es mayor, el movieclip no mantiene sus proporciones. De todas formas me diste algunas ideas para seguir probando.

Subí el ejemplo para que lo veas (click para ver).

Si alguien tiene más sugerencias son MUY bienvenidas ya que esto me tiene hace días sin dar en el clavo...

Gracias!

Por yosoychi

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Feb 2009 12:27 am
jeje XD lo hize sin probarlo... en vez de usar width y height prueba con xscale y yscale :P

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

firefox
Citar            
MensajeEscrito el 19 May 2009 06:31 pm
podrias mostrarnos el codigo de como lo lograste?

Por unasemana

Claber

166 de clabLevel



 

Venezuela

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.