Comunidad de diseño web y desarrollo en internet online

galeria de img, comportamiento raro en firefox (AS 3)

Citar            
MensajeEscrito el 06 Abr 2010 02:42 am
hola como estan, estoy trabajando con AS3 intentando hacer una galeria de imagenes sensilla solo con un boton que valla pasando imagen por imagen, los archivos los recojo con XML, despues de mucho renegar logre que quede como yo queria, con una animacion Tween de entrada y una de salida, me puse muyyy contento cuando parecia quedar andando, pero mi sorpresa fue cuando la probe en firefox, el comportamiento es muy distinto al que deberia ser , no asi en IE, se ve bien, no sabia que a los flash tambien los interpretaban distinto...... les dejo el codigo por si quieren verlo, muchas gracias de ante mano, cualquier sugerencia les agradecere mucho!!!

Código ActionScript :

stop();
var param:Object = LoaderInfo(this.root.loaderInfo).parameters;

var img:Array=new Array  ;
var ii:uint=0;
var total:uint=0;
var seccion:String=new String  ;


var loader:URLLoader = new URLLoader();
loader.dataFormat=URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onComplete);

var request:URLRequest=new URLRequest("listador.php?id="+param["id"]);
loader.load(request);
function onComplete(event:Event):void {

   var myXML:XML=new XML(event.target.data);

   for (var i:uint=0; i<myXML.folder.imagen.length(); i++) {
      total=myXML.folder.imagen.length();
      img[i]=myXML.folder.imagen[i];
      
      
   }
seccion=myXML.seccion;
      
   i=0;
   
   
   indice.text=seccion+" | "+i+" de "+total;
}

import fl.transitions.*;
import fl.transitions.easing.*;

btn.addEventListener(MouseEvent.CLICK, cargaclip);

//traemos la url necesaria para la carga
var miUrl:URLRequest = new URLRequest();
//creamos el MC contenedor
var contenedor:Loader = new Loader();
function cargaclip(event:MouseEvent):void {

indice.text=seccion+" | "+(ii+1)+" de "+total;
   if (ii>0) {

      var mostrar2:Tween=new Tween(contenedor,"alpha",Strong.easeInOut,1,0,1,true);
      var mostrar3:Tween=new Tween(contenedor,"x",Elastic.easeInOut,0,750,1,true);
      
      mostrar3.addEventListener(TweenEvent.MOTION_FINISH, siguiente);
      function siguiente(e:TweenEvent) {
         contenedor.x=0;
         miUrl.url=param["id"]+"/"+img[ii];

         //le decimos que cargue el archivo al contenedor
         contenedor.load(miUrl);//aqui carga la URL, este es el proceso correcto
         cont.addChild(contenedor);


         var mostrar:Tween=new Tween(contenedor,"alpha",Strong.easeInOut,.0,1,1,true);
         ii++;

         if (ii>=total) {
            ii=0;
         }
      }
   } else {
      miUrl.url=param["id"]+"/"+img[ii];

      //le decimos que cargue el archivo al contenedor
      contenedor.load(miUrl);//aqui carga la URL, este es el proceso correcto
      cont.addChild(contenedor);
      var mostrar:Tween=new Tween(contenedor,"alpha",Strong.easeInOut,.0,1,1,true);
      ii++;
   }




}

Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 11:15 am
Describe la diferencia de comportamiento, no es algo que se pueda deducir del código

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Abr 2010 11:36 am
hola jorge gracias por interesarte, mira en IE funciona correctamente, lo que hace es al hacerle clic al boton btn, ingresa una imagen con un tween, luego al hacerle otra vez clic esa imagen se va con otro tween, y aparece otra y asi suscesivamente, ....
en firefox, al hacer el primer clic, no aparece nada, y si se vuelve hacer clic aparece el tween de salida de las imagenes, osea cada ves que se haga clic en ves de aparecer la imagen y quedar hasta que se vuelva hacer clic, solo anima la salida, ... no se si quedo del todo claro. las imagenes las paso con XML, y una variable flashvars, esos datos se que llegan porque tiene un text que marca la cantidad de imagenes y eso esta bien, aparte como te digo las imagenes si aparecen pero no como corresponde, aparece solo el tween de salida... es raro no entiendo.. :oops:

Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 12:00 pm
Lo que veo extraño del código
1.-Debería ser

Código ActionScript :

var img:Array=new Array()  ; //<---unos paréntesis
var seccion:String=new String()  ; 

2.-El "Loader" "contenedor" no tiene ningún listener para saber cuándo se ha acabado de cargar la imagen, con que puede que, según tengamos definida la caché del ordenador, o de lo que sea, finalize el tween ANTES de que acabe de cargar la imagen

Con respecto a que funcione bien en IIE y no en FireFox no entiendo el motivo. Cuando eso sucede es porque no tenemos bien definidas las etiquetas del embed y object en el HTML -aunque no creo que sea este tu caso

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Abr 2010 12:04 pm
bieen gracias!! corrigo eso y les comento. la verdad que se muyy poquito de as3 recien estoy intentando aprender. si puedes y tienes algo de tiempo me explicas como podria hacer el control de la carga de la imagen, si lo pense, pero me hago lio a la hora de implementarlo. lo mas probable es que lo que quiero hacer se lo pueda hacer de alguna forma mucho mas eficiente, yo mismo no lo veo muy prolijo al codigo, pero como les dije, son mis primeros pasos

Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 12:34 pm
intente controlar la carga de la imagen en contenedor, y ahora no anda en ningun navegador jejeje

Código :

contenedor.load(miUrl);//aqui carga la URL, este es el proceso correcto
contenedor.addEventListener(Event.COMPLETE, contcargado);
function contcargado(event:Event): void {
cont.addChild(contenedor);
      var mostrar:Tween=new Tween(contenedor,"alpha",Strong.easeInOut,.0,1,1,true);
      ii++;
}

Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 01:21 pm
corregi la siguiente linea contenedor.contentLoaderInfo.addEventListener(Event.COMPLETE, contcargado);, ahora funciona en IE, pero en Firefox sigue el mismo problema....

Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 02:23 pm
coloco las etiquetas html que cargan el swf por las dudas.... ya no se que puede ser, consegui controlar el loader de las imagenes pero el problema en firefox sigue

Código HTML :

<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="550">
  <param name="movie" value="porfolio.swf" />
  <param name="quality" value="high" />
  <param name="wmode" value="opaque" />
  <param name="swfversion" value="6.0.65.0" />
  <!-- Esta etiqueta param indica a los usuarios de Flash Player 6.0 r65 o posterior que descarguen la versión más reciente de Flash Player. Elimínela si no desea que los usuarios vean el mensaje. -->
  <param name="expressinstall" value="../Scripts/expressInstall.swf" />
  <param name="FlashVars" value="id=<?php echo $_GET['id']; ?>" />
  <!-- La siguiente etiqueta object es para navegadores distintos de IE. Ocúltela a IE mediante IECC. -->
  <!--[if !IE]>-->
  <object type="application/x-shockwave-flash" data="porfolio.swf" width="780" height="550">
    <!--<![endif]-->
    <param name="quality" value="high" />
    <param name="wmode" value="opaque" />
    <param name="swfversion" value="6.0.65.0" />
    <param name="expressinstall" value="../Scripts/expressInstall.swf" />
    <param name="FlashVars" value="id=<?php echo $_GET['id']; ?>" />
    <!-- El navegador muestra el siguiente contenido alternativo para usuarios con Flash Player 6.0 o versiones anteriores. -->
    <div>
      <h4>El contenido de esta página requiere una versión más reciente de Adobe Flash Player.</h4>
      <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtener Adobe Flash Player" width="112" height="33" /></a></p>
    </div>
    <!--[if !IE]>-->
  </object>
  <!--<![endif]-->
</object>

Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 03:03 pm
me quiero matar,!! lo probe en otra pc y anda perfecto en todos los navegadores!!!

Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 03:47 pm
les paso una direc donde pueden ver lo que pasa
http://www.innovus.com.ar/portfolio/untitled.php?id=branding
es raro son las mismas versiones de firefox que tengo en las dos pc, y en una tengo problemas y en otra no

Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 04:48 pm
Es probable que estes usando info sin esperar a que se termine de cargar, por ejemplo el XML (en realidad en tu caso lo generas desde un PHP)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Abr 2010 10:53 pm
hola jorge, gracias, mira yo sospecho que algo de eso es, pero segun entiendo el codigo esta "protegiendo" que las cargas se realicen con el listener COMPLETE, vuelvo a poner el codigo con las modificaciones que realice

Código ActionScript :

stop();
var param:Object = LoaderInfo(this.root.loaderInfo).parameters;

var img:Array=new Array();
var ii:uint=0;
var total:uint=0;
var seccion:String=new String() ;

var loader:URLLoader = new URLLoader();
loader.dataFormat=URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onComplete);

var request:URLRequest=new URLRequest("listador.php?id="+param["id"]);
loader.load(request);
function onComplete(event:Event):void {

   var myXML:XML=new XML(event.target.data);

   for (var i:uint=0; i<myXML.folder.imagen.length(); i++) {
      total=myXML.folder.imagen.length();
      img[i]=myXML.folder.imagen[i];
      
      
   }
seccion=myXML.seccion;
      
   i=0;
   
   
   indice.text=seccion+" | "+i+" de "+total;
}

import fl.transitions.*;
import fl.transitions.easing.*;

btn.addEventListener(MouseEvent.CLICK, cargaclip);

//traemos la url necesaria para la carga
var miUrl:URLRequest = new URLRequest();
//creamos el MC contenedor
var contenedor:Loader = new Loader();
function cargaclip(event:MouseEvent):void {
btn.visible=false;
indice.text=seccion+" | "+(ii+1)+" de "+total;
   if (ii>0) {

      var mostrar2:Tween=new Tween(contenedor,"alpha",Strong.easeInOut,1,0,1,true);
      var mostrar3:Tween=new Tween(contenedor,"x",Elastic.easeInOut,0,750,1,true);
      
      mostrar3.addEventListener(TweenEvent.MOTION_FINISH, siguiente);
      function siguiente(e:TweenEvent) {
         contenedor.x=0;
         miUrl.url=param["id"]+"/"+img[ii];

         //le decimos que cargue el archivo al contenedor
         contenedor.load(miUrl);//aqui carga la URL, este es el proceso correcto
         contenedor.contentLoaderInfo.addEventListener(Event.COMPLETE, contcargado);
         function contcargado(event:Event): void {
            btn.visible=true;
         cont.addChild(contenedor);


         var mostrar:Tween=new Tween(contenedor,"alpha",Strong.easeInOut,.0,1,1,true);
         
         }
         ii++;

         if (ii>=total) {
            ii=0;
         }
      }
   } else {
      miUrl.url=param["id"]+"/"+img[ii];

      //le decimos que cargue el archivo al contenedor
      contenedor.load(miUrl);//aqui carga la URL, este es el proceso correcto
      contenedor.contentLoaderInfo.addEventListener(Event.COMPLETE, contcargado);
      function contcargado(event:Event): void {
      cont.addChild(contenedor);
      btn.visible=true;
      var mostrar:Tween=new Tween(contenedor,"alpha",Strong.easeInOut,.0,1,1,true);
      
      }
      
      ii++;
   }




}

me esta volviendo loco esto, encima me gusto mucho como quedo, y seria muy practico pues solo necesito pasarle el nombre de la carpeta y me muestra las imagenes, pero si no funciona en ambos navegadores no sirve,  :( 

saludos y gracias!


Por jak^

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 07 Abr 2010 06:34 am

jak^ escribió:

me quiero matar,!! lo probe en otra pc y anda perfecto en todos los navegadores!!!

Entonces actualiza el player que tengas en tu FireFox
NOTA1:A mí me funciona exactamente igual en IIE 8.0.6001 y en FireFox 3.6.3
NOTA2:Me queda "extraño" tu HTML -aunque estoy seguro que reinstalando el player en tu ordenador debería funcionar, ¿por qué no usas lo que genera Flash directamente? (vamos usando un swfObject o algo por el estilo)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Abr 2010 12:22 pm
gracias Eliseo2!, el html es el que me genera el Dreamweaver para insertar los swf. que me recomendas? si quiero cambiarlo porque ese codigo no valida, no se porque dreamweaver genera codigo no valido para insertar swf....

saludos

Por jak^

6 de clabLevel



 

msie7

 

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