Comunidad de diseño web y desarrollo en internet online

Centrar una imagen dinámica [urge]

Citar            
MensajeEscrito el 31 May 2009 03:21 pm
Necesito ayuda con urgencia... pq tengo q acabar un trabajo para hoy, y lo único que me falta es conseguir centrar la imagen. Me refiero a que cuándo la imagen se carga desde el xml, ésta se coloque en el mc "contenedor", de forma que coja el centro de la imagen y no la esquina superior izdqa.

El code (parte de él) es ésts:

Código ActionScript :

//Se inicializan variables utilizadas para almenar los datos de una noticia
var titulo:String;
var imagen:String;
//Recuperando datos del objeto xml
//Se accede al primer hijo de elemento [noticia] y se recupera al valor del primer elemento de [titulo]
titulo = ampliaciones_xml.firstChild.childNodes[_indice].firstChild.firstChild.nodeValue;
//Se accede al último hijo de elemento [noticia] y se recupera el valor del primer elemento de [imagen]
imagen = ampliaciones_xml.firstChild.childNodes[_indice].lastChild.firstChild.nodeValue;
//Mostrando los datos recuperados en el cuado de texto mensaje_txt y cargando la imagen en pantalla_mc
this.mensaje_txt.htmlText = titulo;
//Cargado la imagen JPG externa en el clip pantalla_mc con el valor recuperado del objeto xml

var mcload:MovieClipLoader = new MovieClipLoader();
var mclist:Object = new Object();
mclist.onLoadStart = function(clip:MovieClip) {
   trace("Iniciar Carga")
   //Colocamos la barra de precarga en el escenario con el nombre "barra_mc"
   _root.attachMovie("barra", "barra_mc", _root.getNextHighestDepth());
   //Ubicamos la barra en la mitad del escenario
   _root.barra_mc._y = Stage.height/2;
   _root.barra_mc._x = Stage.width/2;
   //Y nuestra barra esta lista para moverse en el evento onLoadProgress
}
mclist.onLoadProgress = function(clip:MovieClip) {
    trace("Cargando...");
   //Declaramos la variable de calculo de porcentaje
   var porcentaje:Number;
   //Calculamos el porcentaje con las variables que le llegan por parametro a la función
   porcentaje = Math.round((loadedBytes*100)/totalBytes);
   //Vamos al frame del porcentaje en nuestra barra de carga
   _root.barra_mc.gotoAndStop(porcentaje);
   //Ahora escondemos el objeto de la precarga y lo frenamos
   clip._visible = false;
   clip.stop();
}
mclist.onLoadInit = function(clip:MovieClip) {
    trace("Carga Completa");
   //Como ya cargo completo, entonces quitamos la barra
   _root.barra_mc.removeMovieClip();
   //Y mostramos el objeto
   clip._visible = true;
   clip.play();
   
   clip._x -= clip._width / 2 ;    
   clip._y -= clip._height / 2 ;
}
mcload.addListener(mclist);
mcload.loadClip(imagen, pantalla_mc);
      
}


Cómo véis, lo he intentado con este script (casi al final del code anterior):

Código ActionScript :

 clip._x -= clip._width / 2 ;    
 clip._y -= clip._height / 2 ;


Pero no me la centra, y lo he intentado con la variable "imagen", pero cómo está declarada como string (imagino que es por eso), me da error...

Si alguién se le ocurre como solucionarlo, se lo agradecería eternamente...

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 May 2009 03:37 pm
No has dicho respecto a qué objeto quieres centrar la imagen, así que aumiré que quieres centrarla respecto al scenario (stage)

Código ActionScript :

clip._x = (Stage.width - clip._width) / 2;
clip._y = (Stage.height - clip._height) / 2;

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 31 May 2009 04:36 pm
Ay si, perdona, te explico dónde lo quiero centrar:

Tengo un escenario de 950px x 580 px
Un mc contenedor (llamado pantalla_mc) situado en x335 y 0 ; se supone q esa debería ser la esquina superior izqda de la posición de la imagen a cargar.

Bien, tomando como referencia la posición del contenedor (pantalla_mc) como esquina superior izqda, tengo un espacio de 580 ancho y 480 alto, dónde la imagen que se cargue, debe hacerlo en el centro de dicho espacio "virtual".

He probado el code q me das, pero sigue cogiendo como referencia la esquina, y no el centro de la foto. También he probado a cambiar en el code el "stage.width y height" por las medidas, y sigue cogiendo la esquina....

Será que en vez de coger "clip" debo coger la variable "imagen" q es donde carga la imagen? o tengo q "coger" otra "cosa"? no lo sé... pero poniendo el code como me lo das, sigue haciendo lo mismo....

Y muchas gracias por responderme y encima tan rápido.... gracias de verdad.... espero que me puedas seguir ayudando.

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 May 2009 04:42 pm
La referencia siempre será la esquina, eso no cambia. Por eso restas el alto/ancho y divides entre 2; pero cuando cargas un objeto externo siempre lo hará desde la esquina superior izquierda.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 31 May 2009 05:30 pm
Gracias... entonces yo estaba confundida, pero sigue sin centrarse...

He puesto ésto:

Código ActionScript :

   clip._x = (335 - clip._width) / 2; 
   clip._y = (0 - clip._height) / 2;


Las coordenadas x335 e y0, es el punto de la esquina superior izqda que debe de tomar como referencia para centrar la imagen, pero claro, creo que debo añadirle datos, cómo que a partir de ese punto, es un ancho de 580 y un alto 480.

Para que se me entienda mejor: Imagina que tengo un cuadrado (un grafico) con un alto de 480px y un ancho de 580px, y su esquina superior izqda está en x335 e y0. Pues la imagen a cargar debe de estar en el centro de este cuadrado.

Pero no consigo hacerlo.... ¿que es lo que debo poner?

Gracias de nuevo.

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 May 2009 05:54 pm
Es posible que el error que hace que no me funcione estas dos líneas, ¿esté en otra parte del script?

Pq he estado buscando mis antiguos trabajos, y estas dos líneas ya lo he usado antes, y si que me funcionaba, pero aqui no me funciona, y no entiendo el porqué...

Pongo el code entero, pq seguro que será alguna tontería que se me escapa...

Código ActionScript :

var precargador_mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
System.useCodepage = true;

var indice:Number;
var ampliaciones_xml:XML;

function cargarDatos(_indice:Number) {
   
//PARA BOTONES QUE APAREZCAN Y DESAPAREZCAN--------   
if(ampliaciones_xml.firstChild.childNodes[indice-1] == null) { 
   anterior_btn._alpha = 0; 
   anterior_btn.enabled=false;
}else{ 
   anterior_btn._alpha = 100;
   anterior_btn.enabled=true;
} 

if(ampliaciones_xml.firstChild.childNodes[indice+1] == null) { 
   siguiente_btn._alpha = 0; 
   siguiente_btn.enabled=false;
}else{ 
  siguiente_btn._alpha = 100;
  siguiente_btn.enabled=true;
}
//FIN DE LOS BOTONES----------------------------
   
var titulo:String;
var imagen:String;

titulo = ampliaciones_xml.firstChild.childNodes[_indice].firstChild.firstChild.nodeValue;
imagen = ampliaciones_xml.firstChild.childNodes[_indice].lastChild.firstChild.nodeValue;
this.mensaje_txt.htmlText = titulo;

var mcload:MovieClipLoader = new MovieClipLoader();
var mclist:Object = new Object();
mclist.onLoadStart = function(clip:MovieClip) {
   trace("Iniciar Carga")
   _root.attachMovie("barra", "barra_mc", _root.getNextHighestDepth());
   _root.barra_mc._y = Stage.height/2;
   _root.barra_mc._x = Stage.width/2;
}
mclist.onLoadProgress = function(clip:MovieClip) {
        trace("Cargando...");
        var porcentaje:Number;
   porcentaje = Math.round((loadedBytes*100)/totalBytes);
   _root.barra_mc.gotoAndStop(porcentaje);
   clip._visible = false;
   clip.stop();
}
mclist.onLoadInit = function(clip:MovieClip) {
   //AQUI EL PROBLEMA-------------------------------------------------
   clip._x = (335 - clip._width) / 2; 
   clip._y = (0 - clip._height) / 2;
   
        trace("Carga Completa");

   _root.barra_mc.removeMovieClip();
   clip._visible = true;
   clip.play();
}
mcload.addListener(mclist);
mcload.loadClip(imagen, pantalla_mc);
      
}
siguiente_btn.onPress = function() {
        if (ampliaciones_xml.firstChild.childNodes[indice+1] != null) {
           indice++;
                cargarDatos(indice);      
        }
};

anterior_btn.onPress = function() {
        if (ampliaciones_xml.firstChild.childNodes[indice-1] != null) {
                indice--;
                cargarDatos(indice);
        }
};

indice = 0;

ampliaciones_xml = new XML();
ampliaciones_xml.ignoreWhite = true;
ampliaciones_xml.load("ampliaciones.xml");

ampliaciones_xml.onLoad = function() {
          cargarDatos(indice);
};

Por Hapki

Claber

268 de clabLevel



 

firefox

 

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