Comunidad de diseño web y desarrollo en internet online

Diagrama liquido - cargar movie clips centrado

Citar            
MensajeEscrito el 30 Nov 2006 02:45 am
Hola a todos, antes que nada quiero agradecer a este foro por la ayuda que brindan, hace poco que comence a animarme a meter un poco de mano en Flash y ha sido de gran ayuda leer algunas cosas aqui.
Les explico mi problema, en realidad soy un poco audaz al meterme con esto siendo principiante.
Esta probando el tema de Diagrama liquido, todo va bien segun el tutorial que esta en el foro, pero al cargar una pelicula externa o un clip de la biblioteca dentro de un contenedor ya no lo mantiene centrado.

Tengo en mi flash un contendor llamado centro_mc que se encuentra centrado, y tiene asignaod este codigo:

onClipEvent (load) {
this.setAjuste("centrar", "centrar", false, false);
}


Quiero cargar un clip que se encuentra en la bilbioteca llamado clip por lo cual luego en otra capa tengo el siguiente script:

centro_mc.attachMovie("clip", "clip1", 1);
Pero al cargarlo lo posiciona en el extremo superior izquierdo del flash. Tambien he probado con:

centro_mc.attachMovie("clip", "clip1", 1);
centro_mc._x = Stage.width/2;
centro_mc._y = Stage.height/2;


y nada, desde ya les agradezco su orientación al respecto. Saludos :crap:

Por reivaj1970

1 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 30 Nov 2006 06:43 pm
has probado cambiar las propiedades Stage.width y .height por Stage._width y ._height (con el subrayado)

Por erny_2004

Claber

166 de clabLevel



Genero:Masculino  

Morelia, Michoacan

firefox
Citar            
MensajeEscrito el 30 Nov 2006 06:48 pm
Stage._width y ._height no va con _ (guión bajo)

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox
Citar            
MensajeEscrito el 01 Dic 2006 03:49 am
Hola, gracias por sus respuestas, pero no funciona. Voy a tratar de explicar que es lo que vengo haciendo a partir de un codigo ActionScript que he encontrado en la web...

Aqui el codigo que va en el frame 1 de la pelicula solo eso:

Código :

// todos los clips ajustables deben tener su origen
// en su esquina superior inquierda
// ajustes iniciales -----------------
// no queremos que se cambie la escala de la película
Stage.scaleMode = "noScale";
// la peli se ajusta arriba a la izquierda
Stage.align = "TL";
// definimos el tamaño mínimo de la peli
ancho_minimo = 955;
alto_minimo = 600;
// en este array almaceno los clips que se tienen
// que ajustar al cambiar el tamaño de la pantalla
clips_ajustables = new Array();
// definimos el objeto que va a detectar el cambio de tamaño
myListener = new Object();
// asociamos el objeto al stage para detectar los cambios
// de tamaño del stage
Stage.addListener(myListener);
// ejecuto la función rec al cambiar el tamaño
myListener.onResize = rec;
function rec() {
   // definimos el alto y ancho que queda
   // después de reescalar, si no alcanza
   // los mínimos, asignamos éstos
   alto = Stage.height;
   if (alto<alto_minimo) {
      alto = alto_minimo;
   }
   ancho = Stage.width;
   if (ancho<ancho_minimo) {
      ancho = ancho_minimo;
   }
   for (var g = 0; clips_ajustables[g]; g++) {
      clips_ajustables[g].alinear();
   }
}
// resolución total
//altoTotal = System.capabilities.screenResolutionY;
//anchoTotal = System.capabilities.screenResolutionX;
//alto = stage.height;
//ancho = stage.width;
// con esta función implemento el método setTipo
// en todos los movieClip.
// Los valores para ajuste_x son "izquierda", "derecha" y "centrar"
// Los valores para ajuste_y son "arriba", "abajo" y "centrar"
// Los valores para ajuste_width son false y un número que
// indica el porcentaje de la anchura del clip respecto de la escena
// Los valores para ajuste_height son false y un número que
// indica el porcentaje de la altura del clip respecto de la escena
MovieClip.prototype.setAjuste = function(ajuste_x, ajuste_y, ajuste_width, ajuste_height) {
   // estos ajustes nos dicen como se tiene modificar el
   // el clip al redimensionar
   this.ajuste_x = ajuste_x;
   this.ajuste_y = ajuste_y;
   this.ajuste_width = ajuste_width;
   this.ajuste_height = ajuste_height;
   // almaceno la posición y el tamaño
   // iniciales de los clips ajustables
   this.x0 = this._x;
   this.y0 = this._y;
   this.w0 = this._width;
   this.h0 = this._height;
   this.ajustePersonalizado = false;
   // almaceno el clip en el array
   clips_ajustables.push(this);
   this.alinear();
};
// función para alinear los clips en funcion de su tipo
MovieClip.prototype.alinear = function() {
   // si se le ha pasado el parámetro ajuste_width en la función
   // setAjuste, significa que debo ajustar el ancho del clip
   // cuando reescalo la pantalla
   if (this.ajuste_width) {
      if (this.ajuste_width.indexOf("%") != -1) {
         // si el valor de this.ajuste_width es un porcentaje
         this._width = (_root.ancho*parseInt(this.ajuste_width))/100;
      } else {
         // si el valor de this.ajuste_width es un número de píxeles
         this._width = this.ajuste_width;
      }
   }
   // lo mismo con el ajuste del alto del clip
   if (this.ajuste_height) {
      if (this.ajuste_height.indexOf("%") != -1) {
         this._height = (_root.alto*parseInt(this.ajuste_height))/100;
      } else {
         this._height = this.ajuste_height;
      }
   }
   // ajustes de posicion de los clips
   if (this.ajuste_x == "izquierda") {
      this._x = this.x0;
   }
   if (this.ajuste_x == "derecha") {
      this._x = Math.round(this.x0+(_root.ancho-_root.ancho_minimo));
   }
   if (this.ajuste_x == "centrar") {
      this._x = Math.round((_root.ancho-this._width)*0.5);
   }
   if (this.ajuste_y == "arriba") {
      this._y = this.y0;
   }
   if (this.ajuste_y == "abajo") {
      this._y = Math.round(this.y0+(_root.alto-_root.alto_minimo));
   }
   if (this.ajuste_y == "centrar") {
      this._y = Math.round((_root.alto-this._height)*0.5);
   }
   // si el clip tiene un ajuste especial ejecuto su función ajustar
   // que hemos definido en el onClipEvent(load) del clip
   if (this.ajustePersonalizado) {
      this.ajustar();
   }
};

En el frame 2 tengo un contenedor llamado centro_mc al cual le asigno un codigo Actionscript:

Código :

onClipEvent (load) {
   this.setAjuste("centrar", "centrar", false, false);
}

En el cual cargo clip de la biblioteca llamado "tres":

Código :

centro_mc.attachMovie("tres", "tres1", 1);


Aqui el codigo que va en el frame 3 de la pelicula:

Código :

// ejecuto la función por primera vez para ajustar
rec();
stop();


Hasta aqui todo va bien, colo que dentro del clip "tres" tengo un boton que carga otro clip llamado "la_clinica":

Código :

on (release) {
   _root.centro_mc.attachMovie("la_clinica", "la_clinica1", 1);
}


Al cargar este clip, ya no lo centra como corresponde.
Disculpen por poner todo esto, pero no solo quiero copiar codigos sino tratar de entenderlos, para aprender.
Por lo que yo veo en el codigo, hay un listener que reposiciona los movie clips en cuanto detecta un resize, creo que basicamente asi funciona, pero no veo que tenga un listener que reposicione los movie clips cuando se van cargando, si yo en el primer clip que carge tenia un ancho y un alto, a este lo posiciona bien, pero al cargar otro con medidas distintas surge el problema.
Pero si achico la pantalla y la vuelvo a agrandar detecta el resize y posiciona bien el clip nuevo que cargue.
Espero no haberlos mareado con todo esto y gracias por su ayuda.

Por reivaj1970

1 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 01 Nov 2007 05:11 am
hola, estoy teniendo el mismo problema, creo que encontre que es peor no se como resolverlo. te digo lo que revise yo.
1- pelicula principal del mismo tamaño que los swf externos
2- con attach no lo hice
3. fijate bien de que los mc no tengan objetos enmascarados que no veas "PERO QUE cmabian el tamaño del mc" o sea que si tu mc mide 10, pero tenes un objeto enmascarado que sobresale 4 px, el centro del mc ya no va a ser 5, sino 7
4- esto me sucede a mi con las mascaras de los scrolls y no se como solucionarlo, espero que te sirva de algo

Por djsalvador

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Nov 2007 09:40 am
Buenas...

Creo q tu problema es similar al q yo he planteado en otro post (problemas con movieclip._width).

Prueba a hacer un clic en cuaquier parte de la pelicula flash con el ratón y comprueba si la pelicula se centra correctamente. Yo he probado a hacer un trace con los valores del contenedor (en tu caso contenedor_mc) y he comprobado que hasta que no interactuo con la pelicula no se reajustan a la nueva imagen cargada.Todos los valores del contenedor (width, x, y , etc. ) se mantienen con respecto a la primera imagen que cargas, una vez haces clic se reajustan a la segunda imagen ya cargada. Es algo muy raro y yo tampoco encuentro solucion.

Por ElMarkis

55 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Feb 2011 12:06 am
se que ha pasado mucho tiempo de este post pero a lo mejor de algo le sirve a alguien.
Flash carga por defaul cualquier pelicula en la esquina superior izq.
no voy a poner la solucion completa pero les dare la idea general.
Tienes que poner un listener al cargador de la pelicula o foto que quieras poner, y en el evento loadInit poner todas las modificaciones que quieran hacer, el loasInit es el evento en el que ya tenemos disponible el movie clip para editar sus propiedades. si lo haces en load start o en load progress al terminar de cargarse te modifica todo, espero les sirva esta info,,, saludos.........

Por chavikidev

0 de clabLevel



 

msie8

 

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