Comunidad de diseño web y desarrollo en internet online

Socorro Urgente Con Clase Global

Citar            
MensajeEscrito el 25 Abr 2011 04:31 pm
Hola, tengo una galería de imagenes y swf en donde el visor se adecua al tamaño de la imagen o del SWF.
Como no podia detectar la medida de la imagen de ninguna forma he decidido pasar el ancho y el alto a través de la clase Global de as3 (no viene de serie) y resulta que me coge los valores a toro pasado, es decir, para la imagen1 no me coge nada (undefined), para la imagen2 me coge las medidas de la imagen1 y así sucesivamente.
¿Qué puedo hacer? Estoy dándole vueltas y no encuentro la solución.
Es muy urgente. :(

Esta es la clase:

package
{
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.*;
import misclases.Global;

public class CargaImagen extends Sprite
{

private var url:String

public function CargaImagen(req:String):void
{
url = req;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imagenCargada);
loader.contentLoaderInfo.addEventListener(Event.INIT, pasarParametros);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, imagenError);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imagenProgreso);
loader.load( new URLRequest(url));
}

private function imagenCargada(e:Event):void {
trace("Cargada: " + e);
addChild(e.target.content);

}

private function pasarParametros(e:Event):void {
trace("Preparada: " + e);
var global:Global = Global.getInstance();
var alto:int = 310; //alto del contenido
e.target.content.width = (e.target.content.width*alto)/e.target.content.height;
e.target.content.height = alto;
global.setValue("ancho_mc",e.target.content.width);
global.setValue("alto_mc",e.target.content.height);


}


private function imagenError(e:IOErrorEvent):void {
trace("Error: " + e);
}

private function imagenProgreso(e:ProgressEvent):void {
trace("Cargados=" + e.bytesLoaded + " Total=" + e.bytesTotal);
}

}

}

Por malcomcc

39 de clabLevel



Genero:Masculino  

Desarrollador Web/Multiplataforma/Gráfico

firefox
Citar            
MensajeEscrito el 25 Abr 2011 05:07 pm
y si pones esto en la función de la imagenCargada

global.setValue("ancho_mc",e.target.content.width);
global.setValue("alto_mc",e.target.content.height);

q creo q es donde le pasas el alto al tu clase global

Por el_putas

58 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Abr 2011 05:25 pm
Gracias pero eso me ha ayudado mucho porque con las trace he descubierto que es el swf el que no coge bien las medidas.

Por malcomcc

39 de clabLevel



Genero:Masculino  

Desarrollador Web/Multiplataforma/Gráfico

firefox
Citar            
MensajeEscrito el 25 Abr 2011 05:49 pm
Este es el trozo del .fla que me está jodiendo vivo porque es para el trabajo y solo estoy pendiente de esta tonteria:

var Carga:CargaImagen = new CargaImagen(arrayImagenes[v]);
Carga.name = "Carga";
sp.name = "sp";
addChild(sp)
sp.addChild(Carga);
var global:Global = Global.getInstance();
var alto_cont = global.getValue("alto_mc");
var ancho_cont = global.getValue("ancho_mc");
trace("GLOBALES");
trace("alto = "+alto_cont);
trace("ancho = "+ancho_cont);
trace("Hasta aqui GLOBALES");
sp.x = pantalla.x;
sp.y = pantalla.y;
trace("anchoCONT = "+ancho_cont);
pantalla.width = ancho_cont;
fnd_visor.height = alto_cont+70;
fnd_visor.width = ancho_cont+30;
btn_maximizar.x = fnd_visor.width-27;
btn_restaurar.x = btn_maximizar.x;
btn_menos.x = (fnd_visor.width/2)-50;
btn_mas.x = (fnd_visor.width/2)+50;
pantalla.height = alto_cont;

TweenLite.from(Carga,2,{alpha:0,ease:Sine.easeOut});

La cuestión es que, según los trace, la clase envía las medidas pero el .fla es como si no lo recogiera hasta la segunda vez que pincho en algo, pero claro, coge las medidas del anterior, con lo cual es un lio.
¿Alguien sabe qué puedo hacer? Es para el trabajo
Gracias a el_putas por su tiempo !!!

Por malcomcc

39 de clabLevel



Genero:Masculino  

Desarrollador Web/Multiplataforma/Gráfico

firefox
Citar            
MensajeEscrito el 25 Abr 2011 05:52 pm
La verdad es que estoy hecho un lio.
Sigo mirando los trace y el problema creo que es que primero el .fla realiza todo el trabajo, y cuando ya tiene todo realizado y no vale para nada le llega la medida desde la clase.
¿Cómo hago para remediarlo?

Por malcomcc

39 de clabLevel



Genero:Masculino  

Desarrollador Web/Multiplataforma/Gráfico

firefox
Citar            
MensajeEscrito el 25 Abr 2011 06:22 pm
Para mi es q envías los valores después de q el fla los pide, por eso te muestra el último valor y no el actual. Los valores existen es después de cargada la imagen

Por el_putas

58 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Abr 2011 06:56 pm
Muchas gracias, el_putas, ya lo solucioné
Las medidas las paso con el addChild (después de cargar la imagen) o en el evento INIT (cuando las propiedas del objeto están disponibles) pero siempre llegan tarde.
Lo he solucionado poniendo la recuperación de las variables globales y el redimensionamiento de los objetos dentro de una función que he asignado al evento ENTER_FRAME por lo que el .fla está pendiente por si le llegan las medidas y cuando le llegan las aplica (que es instantaneo).
Ahora ya estoy en casa, pero si me acuerdo mañana pego aqui el codigo para que lo veas.
Espero que esto te sirva alguna vez de algo, el_putas y gracias de nuvo

Por malcomcc

39 de clabLevel



Genero:Masculino  

Desarrollador Web/Multiplataforma/Gráfico

firefox

 

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