Comunidad de diseño web y desarrollo en internet online

anchura de MC recien creado con imagen = 0...??

Citar            
MensajeEscrito el 04 Oct 2011 05:31 pm
Hola a tod@s.

Abro este nuevo hilo con una duda paralela que tengo. Os pego aquí el código problemático:

Código ActionScript :

var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();

listener.onLoadInit = function(target:MovieClip):Void
{
   target._height = 100;
    //target._width = 200;
      //target._yscale = target._xscale;
   target._xscale = target._yscale;
}

function desplegarImagenes(carpeta:String)
{
   trace("carpeta donde se encuentran las imagenes:" + carpeta);
   crearMiniImagenes(carpeta);
}

function crearMiniImagenes(carpeta:String)
{
   var pos:Number = 0;
   var myMC:MovieClip;
   loader.addListener(listener);
   for (i = 1; i < 5; i++)
   {
       myMC = _root.createEmptyMovieClip("myMC" + i, _root.getNextHighestDepth());
      loader.loadClip("imagenes/" + carpeta + "/" + i + ".jpg", _root["myMC" + i]);
      _root["myMC" + i]._x = pos;
      _root["myMC" + i]._y = 0;
      pos += _root["myMC" + i]._width + 20;
      trace("anchura imagen: " + _root["myMC" + i]._width);
   }
}


la salida de anchura imagen es en todos los casos 0. ¿Cómo puedo averiguar la anchura del mc contenedor de la imagen para poder colocarlas adecuadamente? Es curioso, porque me establece correctamente la posición del MC (._x, ._y), pero no puedo consultar su ._width

Muchas gracias de antemano,
un saludo
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

chrome
Citar            
MensajeEscrito el 04 Oct 2011 07:22 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 08:38 pm
Muchas gracias por responder. Mañana mismo lo pruebo y comento por aquí si la cosa quedó solucionada y pego el código correcto.

Si me puedes hacer el favor, echa un vistazo a mi otro post sobre cómo cargar todos los archivos *.jpg que se encuentren en una carpeta, a ver si entre los dos conseguimos sacarlo.

Muchas gracias de nuevo por tu tiempo y las molestias que haya podido causarte y siento haber mencionado el otro post dentro de éste, que es un tema distinto.

Un saludo,
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox
Citar            
MensajeEscrito el 05 Oct 2011 09:06 am
Buenos días (aquí en España). He intentado escribir el código que me comentaste ayer, pero no ha habido manera. Lo pego aquí a ver si se os ocurre alguna idea:

Código ActionScript :

var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
var pos:Number = 0;

listener.onLoadInit = function(target:MovieClip):Void
{
   target._height = 100;
    //target._width = 200;
      //target._yscale = target._xscale;
   target._xscale = target._yscale;
}

listener.onLoadComplete = function(target:MovieClip):Void 
{
   trace("posición antes: " + pos);
   pos = pos + target._width + 20; 
   trace("posición después: " + pos);
   trace("--------------------");
}

function desplegarImagenes(carpeta:String)
{
   //trace("carpeta donde se encuentran las imagenes:" + carpeta);
   crearMiniImagenes(carpeta);
}

function crearMiniImagenes(carpeta:String)
{
   var myMC:MovieClip;
   loader.addListener(listener);
   for (i = 1; i < 5; i++)
   {
      myMC = _root.createEmptyMovieClip("myMC" + i, _root.getNextHighestDepth());
      loader.loadClip("imagenes/" + carpeta + "/" + i + ".jpg", _root["myMC" + i]);
      _root["myMC" + i]._x = pos;
      _root["myMC" + i]._y = 0;
   }
}


La salida que da el trace del onLoadComplete es la siguiente:

Código ActionScript :

posición antes: 0
posición después: 20
--------------------
posición antes: 20
posición después: 40
--------------------
posición antes: 40
posición después: 60
--------------------
posición antes: 60
posición después: 80
--------------------


Puede que entendiera mal la respuesta de ayer o que tenga que implementarla de alguna otra forma. Ya me contaréis si se os ocurre alguna cosa.

Muchas gracias de nuevo
Un saludo,
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

chrome
Citar            
MensajeEscrito el 10 Oct 2011 04:45 pm
No he conseguido solucionar aún este problema y no encuentro por ningún sitio cómo hacerlo.
A ver si alguien más echa un vistazo al post y puede comentarlo.

Muchas gracias
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox
Citar            
MensajeEscrito el 10 Oct 2011 05:27 pm
Por si sirve de algo a alguien, aquí va una traza interesante:

Código ActionScript :

listenerImagenes.onLoadInit = function(target:MovieClip):Void
{
   target._height = tamImagen;
   target._xscale = target._yscale;

   trace("onLoadInit width: " + target._width);
}

listenerImagenes.onLoadComplete = function(target:MovieClip):Void 
{
   trace("onLoadComplete width: " + target._width);
}

mostrarImagenes = function()
{
   trace("function mostrar imagenes");
   var myMC:MovieClip;
   loader.addListener(listenerImagenes);
   for (i = 1; i < 5; i++)
   {
      myMC = _root.createEmptyMovieClip("myMC" + i, _root.getNextHighestDepth());
      loader.loadClip("imagenes/SubcategoriaX1/" + i + ".jpg", _root["myMC" + i]);
      _root["myMC" + i]._x = pos;
      _root["myMC" + i]._y = 0;
      //pos += tamImagen + 20;
   }
}


y el resultado de la traza es:

Código ActionScript :

function mostrar imagenes
onLoadComplete width: 0
onLoadComplete width: 0
onLoadComplete width: 0
onLoadComplete width: 0
onLoadInit width: 120.3
onLoadInit width: 103.45
onLoadInit width: 77.35
onLoadInit width: 192.3


no sé a vosotros, pero a mi me parece que se llama antes a onLoadComplete que a onLoadInit...así que la solución chapucera que he tomado:

Código ActionScript :

listenerImagenes.onLoadInit = function(target:MovieClip):Void
{
   target._height = tamImagen;
   target._xscale = target._yscale;
   
   target._x = posImagen + 20;
   posImagen = target._x + target._width;
}


y no uso para nada el método onLoadComplete. Establezco el posImagen a la posición inicial donde quiero que aparezcan las imágenes y listo.

Espero que a alguien le sirva de algo y si alguno entiende porqué pasa esto, pues ésta podría ser una buena oportunidad de entenderlo entre todos.

Muchas gracias
un saludo a tod@s
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox

 

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