Comunidad de diseño web y desarrollo en internet online

Remover evento del raton en esta galeria XML (As3)

Citar            
MensajeEscrito el 20 Mar 2010 01:55 pm
Hola primeramente a todos y espero que me podréis ayudar en esto. Antes he postulado una pregunta sobre como separar esta misma galería en clases, pero de esta forma con el código en la primera linea de tiempo funciona perfectamente. El tema fue intitulado Cargar Xml sin utilizar código en la linea de tiempo (as3). Aun no tuve contestaciones en este tema, pero como mencione esta galería funciona con el mismo código, perfectamente de esta forma:

Código ActionScript :

var loader:URLLoader = new URLLoader(); 
var XmlExterno:XML;
var i:Number=0;
var lista:XMLList;
var total:Number;
var fotos = new Loader();
addChild(fotos);
fotos.x = 100;
fotos.y=50;

loader.addEventListener(Event.COMPLETE,cargarXML); 
loader.load(new URLRequest("galeria.xml")); 



function cargarXML(event:Event){
   var cargador:URLLoader = event.target as URLLoader;
    XmlExterno = new XML(cargador.data);
   
    lista=XmlExterno.children();
   total=lista.length();
   var foto = new Loader();
    addChild(foto);

   descripcion.text=lista[i].attribute("descripcion");
   fotos.load(new URLRequest(lista[i].attribute("imagen")));
   

}
//boton1
boton1.addEventListener(MouseEvent.CLICK,siguiente);
boton2.addEventListener(MouseEvent.CLICK,atras); 
//boton2

function siguiente(event:MouseEvent){
   if(i<total-1)i++;
   descripcion.text=lista[i].attribute("descripcion");
   fotos.load(new URLRequest(lista[i].attribute("imagen")));
}


function atras(event:MouseEvent){
   if(i>0)i--;
   descripcion.text=lista[i].attribute("descripcion");
   fotos.load(new URLRequest(lista[i].attribute("imagen")));
}


Y el problema es que pienso que deveria de remover el evento del raton para no sobrecargar el archivo al colgar en internet. Pero no lo se como hacerlo. Así que postulo en busca de saber como podría remover estos eventos del ratón.
Gracias de ante mano por cualquier ayuda que reciba y saludos mas una vez a todos los del foro ya que soy nuevo por aquí.

Por fininhop

18 de clabLevel



 

safari
Citar            
MensajeEscrito el 20 Mar 2010 03:47 pm
mm por que no parsear o recorres la data que proviene del XML , cuando haces el recorrido de los datos mandas a cargar todas las fotos de una vez , ya con los eventos del raton solo generarias los movimientos aunque parece ser que todas las fotos quedan en un mismo lugar , asi que solo seria que hicieras un reaparentamiento de las fotos, otra cosas ahi tienes un objeto Loader que no ocupas * var foto = new Loader() * o al menos no hace nada.


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 20 Mar 2010 04:14 pm
Muchas gracias Jonathan por su atención por este tema.

La variable foto es el movie clip donde se cargan las fotos que luego lo he inserido al escenario con addChild.

Jonathan pido perdón por mi ignorancia, pero no hace mucho que comencé con action script y no lo tengo ni idea de como parsear esto. En realidad no lo se que significa parsear. Lo que dijiste arriba de cargar las fotos todas de una vez y solamente pasar y retroceder las fotos con los botones es exactamente lo que quiero pero ni idea de como lograrlo. Ya llevo rato encima de esto he postulado en otros foros y estoy leyendo todo lo que encuentro por delante ademas de descargar diferentes ejemplos de código, pero nada me brinda la solución.

En realidad mi objetivo no es cargar fotos sino un pequeño texto xml, al igual que una galería de fotos, donde estarían cinco paginas con una breve descripción de un contenido que se cargaría en una nueva ventana. Los dos botones pasarían estos contenidos y el usuario podría tener una breve explicación de los temas de esta nueva ventana. Esta nueva ventana se abriría en una otra pagina que no estará en as3. De todos modos esto es idéntico a una galería de fotos en cuestión de código. Lo que cambia es que en vez de fotos yo quiero cargar un pequeño texto con un link (leer mas...) por ejemplo.

Gracias por sua atención y su esclarecimiento sobre este tema. Cualquier comentario adicional, link explicativo, o cosa por el estilo me será de gran ayuda.

Por fininhop

18 de clabLevel



 

safari
Citar            
MensajeEscrito el 20 Mar 2010 05:09 pm
postea ese XML para ver como esta estructurado, sobre lo de recorrer los datos , puedes leer este tutorial que explica el manejo de documentos XML con As3.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 20 Mar 2010 06:21 pm
El xml..:

Código XML :

<galeria titulo="titulo galeria">
    <foto id="1"  imagen="imagenes/foto1.jpg" descripcion="texto 1"/>
    <foto id="2"  imagen="imagenes/foto2.jpg" descripcion="texto 2"/>
    <foto id="2"  imagen="imagenes/foto3.jpg" descripcion="texto 3"/>
</galeria>

Por fininhop

18 de clabLevel



 

safari
Citar            
MensajeEscrito el 21 Mar 2010 05:45 am
bien, me hice de un poco de tiempo y arme el ejercisio , me centre en lo que querias de cambiar la informacion en el campo de texto atravez de los botones atras y siguiente , para eso modifique el documento XML y quedo a si :

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<galeria titulo="titulo galeria"> 
      <foto id="1"> 
      <path>assets/photoA.jpg</path>
      <description>
         Google:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ut enim at risus fringilla rhoncus.
      </description>
      <link><![CDATA[<a href="event:http:www.google.com">read more..</a>]]></link>
   </foto>
   <foto id="2"> 
      <path>assets/photoB.jpg</path>
      <description>
         Adobe:Nullam feugiat, diam at eleifend ultricies, libero nisi aliquam purus, vitae congue est libero in enim.
      </description>
      <link><![CDATA[<a href="event:http:www.adobe.com">read more..</a>]]></link>
   </foto>
      <foto id="3"> 
      <path>assets/photoC.jpg</path>
      <description>
         Wikipedia:Uultricies rutrum pretium. Nam tristique dapibus felis eu ornare. Cras nulla nulla, interdum id mollis eget.
      </description>
      <link><![CDATA[<a href="event:http:www.wikipedia.org">read more..</a>]]></link>
   </foto>
</galeria>


y el as :

Código ActionScript :

var xmlContent:XML;
var childrenList:XMLList;
var xmlLoader:URLLoader;
var count:int;

var index:int = 0;

//iniciamos nuestra aplicacion
initApp();

function initApp():void
{
   xmlLoader = new URLLoader();
   xmlLoader.addEventListener(Event.COMPLETE, onDataLoaded);
   xmlLoader.load(new URLRequest("data.xml"));
}

function onDataLoaded(e:Event):void
{
   var tmpLoader:URLLoader = e.target as URLLoader;
   tmpLoader.removeEventListener(Event.COMPLETE, onDataLoaded);
   
   xmlContent = new XML(tmpLoader.data);
   childrenList = new XMLList(xmlContent.children());

   count = childrenList.length();
   
   //hacemos un display del primero valor de la data , index = 0 , por lo tanto
   //se cargara el primer dato
   //tDescription nombre de instancia de un campo de texto dinamico en la escena
   tDescription.text = childrenList[index].description.toString();
   //tLinkTag nombre de instancia de un campo de texto dinamico en la escena
   tLinkTag.htmlText = childrenList[index].link;
   
   //agregamos el listener que esuchara cuando se haga click sobre el campo de texto
   tLinkTag.addEventListener(TextEvent.LINK,onLinkEvent);
   
   mNext.buttonMode = true;
   mPrev.buttonMode = true;
   //en esta etapa de la ejecucion nuestros datos deben estar ccargados
   //por lo tanto agrego los listeners para los eventos del MouseClick
   //mNext y mPrev son los nombres de instancia de los mcs que hacen de botones anterior y siguiente
   mNext.addEventListener(MouseEvent.CLICK, onClickNext);
   mPrev.addEventListener(MouseEvent.CLICK, onClickPrev);
}

function onClickNext(e:MouseEvent):void
{
   if(index < count-1){index++;}

   tDescription.text = childrenList[index].description.toString();
   tLinkTag.htmlText = childrenList[index].link;
   tLinkTag.addEventListener(TextEvent.LINK,onLinkEvent);
}

function onLinkEvent(e:TextEvent):void
{
   //en la propiedad text del e object esta almacenada la url por lo tanto 
   //se la paso al URLRequest object en su constructor
   var req:URLRequest = new URLRequest(e.text);
   //que nos lleve a la url , en este caso le he puesto _self , lo que hara que salga
   //en una nueva ventana en el navegador
   navigateToURL(req,"_self");
}

function onClickPrev(e:MouseEvent):void
{
   if(index > 0){index--;}

   tDescription.text = childrenList[index].description.toString();
   tLinkTag.htmlText = childrenList[index].link;
   tLinkTag.addEventListener(TextEvent.LINK,onLinkEvent);
}


es practicamente tu mismo codigo , solo cambia los nombres de las variables que para mi, me es mas comodo manejar, comente las posibles lineas en las que te puedas complicar.


Jonathan

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 21 Mar 2010 02:43 pm
Jonathan realmente muchas gracias por este aporte mas que nada por todo el empeño que demostraste en hacer el código as3 y ademas el xml de la forma que quiero. Esto será de una enorme utilidad para mi en este momento y yo ya estaba loco por encontrar un forma de hacer esto. En la web he encontrado enumerados ejemplos de galerías de fotos, pero no había visto nada parecido a esto. Esta muy bien por ejemplo para meterlo en algo como: (Lo mas destacado), o (Lo mas vist)o etc.... En la pagina principal de una web...
Lo he probado y todo funciona muy bien aunque cuando intento acceder a leer mas... No se me abre una ventana de mi navegador y supongo que esto pasa porque tengo que cargar este swf en una pagina xhtml, html, etc.., donde se abrirá el link en la misma pagina verdad? Digo no la misma pagina si no que solo funcionara el link si lo cargo en un html por ejemplo o estoy equivocado. Porque no va el link cuando lo depuro en flash. No me abre ninguna ventana de mi navegador y por esto supuse lo que acabo de decir arriba.

De todas formas esta estupendo muchas gracias por este enorme aporte y por todo el trabajo que tuviste en rehacer el código.
Saludos....

Por fininhop

18 de clabLevel



 

safari
Citar            
MensajeEscrito el 21 Mar 2010 03:08 pm
hola, mm debe de funcionar desde el IDE de flash, lo acabo de probar y funciono , sin tener que publicar el HTML, checa el codigo ,algo no debe estar funcionando.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 21 Mar 2010 04:27 pm
Si funciona..... Mil perdones.......
Yo tengo un mac y me instale firefox que se quedo como navegador por omisión y no lo se porque, creo que por algo en la configuración de firefox, no abre ventanas de otras aplicaciones. Entonces he puesto Safari como navegador por omisión y listo a funcionado.

Esta muy bien, todo funciona como lo deseado........ Mas una vez Gracias por este big aporte y felicitaciones.......
Me has ayudado mucho con este tema y se ve que has puesto total empeño en ayudarme......

Suerte y saludos.......

Por fininhop

18 de clabLevel



 

safari
Citar            
MensajeEscrito el 21 Mar 2010 05:22 pm
opps de echo si tiene un error , cuando lo probe en el localhost , me salia un error , esto es debido a que se me paso agregar el doble // desues del http :oops: , el xml debe quedar asi :

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<galeria titulo="titulo galeria"> 
      <foto id="1"> 
      <path>assets/photoA.jpg</path>
      <description>
         Google:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ut enim at risus fringilla rhoncus.
      </description>
      <link><![CDATA[<a href="event:http://www.google.com/">read more..</a>]]></link>
   </foto>
   <foto id="2"> 
      <path>assets/photoB.jpg</path>
      <description>
         Adobe:Nullam feugiat, diam at eleifend ultricies, libero nisi aliquam purus, vitae congue est libero in enim.
      </description>
      <link><![CDATA[<a href="event:http://www.adobe.com/">read more..</a>]]></link>
   </foto>
      <foto id="1"> 
      <path>assets/photoC.jpg</path>
      <description>
         Wikipedia:Uultricies rutrum pretium. Nam tristique dapibus felis eu ornare. Cras nulla nulla, interdum id mollis eget.
      </description>
      <link><![CDATA[<a href="event:http://www.wikipedia.org">read more..</a>]]></link>
   </foto>
</galeria>



Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox

 

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