Comunidad de diseño web y desarrollo en internet online

Cargar un swf en el centro

Citar            
MensajeEscrito el 01 Sep 2010 11:37 am
Hola a todos, mi pregunta básica:
¿Cómo hago para que el swf cargado me quede centrado en x e y? Lo he probado con:

Código ActionScript :

var carga = new Loader();
carga.load(new URLRequest("peli.swf"));
addChild(carga);
carga.x = stage.stageWidth/2-carga.width/2;
carga.y = stage.stageHeight/2-carga.height/2;

Pero, no descuenta la mitad del ancho, ni del alto. ¿ Alguien sabe decirme por qué?
Gracias!

Por GUSUM

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Sep 2010 01:40 pm
Porque tienes que hacerlo una vez que termine de cargar, eso quiere decir que tienes que agregar un preloader

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Sep 2010 03:05 pm
Que tal un saludo amigo, hace un rato me paso algo similar busque por la red una solución y no encontré algo al respecto, ahora te comento que no necesitas el preloader por el ejemplo que veo que tienes ahí, el problema que yo veo es que quieres obtener la altura y anchura de un Objeto Loader un contenedor que tendrá por defecto 0:Width y 0:Height si quieres has una prueba e intenta imprimir con un trace,, trace(carga.width+”--”+carga.height); eso te enviara 0,0 por ahora no tengo una solución optima lo que hago es pasarle por defecto el tamaño de mi película swf que estoy cargando, por ejemplo: si el swf que quiero cargar tiene altura y anchura de 300x250 le paso directamente esos valores y listo,

si encuentro una solución la posteo mas tarde.


Cualquiera puede tener el conocimiento solo es cuestión de saber cómo encontrarlo. Desde

Por macrowebdigital

7 de clabLevel



 

2002

firefox
Citar            
MensajeEscrito el 01 Sep 2010 03:49 pm
claro que se ocupa el preloader PROGRESS EVENT , COMPLETE o registrar la carga INIT , como por ejemplo en el evento complete :

Código ActionScript :

var carga = new Loader(); 

carga.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true);

function onComplete(e:Event):void
{
   var pelicula:MovieClip = e.target.content as MovieClip;
   pelicula.x = (stage.stageWidth - pelicula.width) * 0.5;
   pelicula.y = (stage.stageHeight - pelicula.height) * 0.5;
   addChild(pelicula);
   
}

carga.load(new URLRequest("peli.swf")); 


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 01 Sep 2010 04:38 pm
Aaaa genial maneuver encontraste la solución no pensé en el contentLoaderInfo que cacha la info del contenedor Interno y así es como obtengo ya el ancho y alto de la peli interna gracias amigo, por el aporte igual me ha servido, ahora te comento porque comente que no importaba el preloader, es que en el código de GUSUM a final de cuenta no le interesa eso al momento según su código lo único que necesita es que el Clip u objeto este centrado, y una vez que tu Complete termina hace lo mismo sigue sin centrarlo por qué? Porque un objeto este o no este en el stage se encuentra en memoria y el evento lo único que hace es terminar de cargar algo que tiene ya en el bufering, un “onLoader” como en Javascript no es como un Complete de AS3 ya que un onLoader o preloader se ejecutan cuando todos los eventos del escenario o pagina terminan de cargarse un Event.COMPLETE del AS3 es un evento que termina cuando exclusivamente un CLIP en particular termina de cargar ese CLIP del bufering, ahora si lo que necesitas es algo similar a un preloader o un evento que se ejecuta en toda la peli lo que uso yo es hago un

Código ActionScript :

stage.addEventListener(Event.ENTER_FRAME,Ordena);


Código ActionScript :

function ordena(e:Event):void
{
   // funciones para ordenar redimensionar eventos principales etc…
}

Esto hace que al iniciar mi película se centre.

Si necesito mostrar en un HTML por escala liquida solo meto los width y height al 100% y la película le asigno

Código ActionScript :

   stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;   


Y en un evento de

Código ActionScript :

stage.addEventListener(Event.RESIZE, EscalarPelicula);


Vuelvo a ejecutar una función que escale y centre mis objetos de la película.

Nota: “para mozilla opera y safari” necesito en un CSS meter esto dentro del HTML para versiones actuales

Código HTML :

   .pelicula
   {
      width: 100%;
      height: 100%;
   }
   embed
   {
      width: 100%;
      height: 100%;
      position: absolute; 
   }




Como el Event.COMPLETE no es un evento al nivel del componentDisplay no podría usar esto

Código ActionScript :

stage.addEventListener(Event.COMPLETE, ); 


En una ocasión intente hacerlo pero lógicamente no sucederá nada.


Ahora un punto final amigo maneuver tu código tiene un ligero error ya que de cualquier forma seria lo mismo si lo dejas tal cual está ya que no trae los datos del contentLoaderInfo. Y es que solo te falto ponerlo así:

Código ActionScript :

var carga = new Loader();  
 
carga.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); 
 
function onComplete(e:Event):void 
{ 
   var pelicula:MovieClip = e.target.content as MovieClip; 
   //pelicula.x = (stage.stageWidth - pelicula.width) * 0.5; 
   //pelicula.y = (stage.stageHeight - pelicula.height) * 0.5; 
     pelicula.x = (stage.stageWidth/2 – e.target.width/2);     pelicula.y = (stage.stageHeight/2 – e.target.height/2);
   addChild(pelicula); 
    
}  
carga.load(new URLRequest("peli.swf")); 



Puedes probar a hacer esto dentro de la function

Código ActionScript :

function onComplete(e:Event):void 
{ 
trace(pelicula.width);    // creara un erro
trace(e.target.width);   // sera correcto


Cualquiera puede tener el conocimiento solo es cuestión de saber cómo encontrarlo. Desde

Por macrowebdigital

7 de clabLevel



 

2002

firefox
Citar            
MensajeEscrito el 01 Sep 2010 04:47 pm
orale, pero no crea que tenga error. :wink: ya que el SWF en cuestion se encuentra en la propiedad content del LoaderInfo Object , la variable pelicula hace referenecia a ese contenido mas el cast no generas ningun error pues le indicas al compilador que es mas que un DisplayObject y un SWF externo no es mas que un MovieClip.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 01 Sep 2010 05:10 pm
cierto amigo me disculpo por eso pero hando medio ciego esta aqui:

va

Código ActionScript :

r pelicula:MovieClip = e.target.content as MovieClip; 

genial :) un saludo desde Mexico, y seguimos en la ayuda y aprendizaje:

Por macrowebdigital

7 de clabLevel



 

2002

opera

 

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