Comunidad de diseño web y desarrollo en internet online

Galeria as3 y xml

Citar            
MensajeEscrito el 01 Dic 2008 05:03 am
Estoy haciendo una pagina en AS3, y en la cual quiero meter una galeria de fotos.No he encontrado un tutorial completo de como hacerlo, asi que recogiendo trozos, he conseguido armar como una lista de miniaturas de fotografias, pero que al hacer click sobre ellas se abren en otra ventana.
Como podria hacer para abrirlas dentro del flash?
Si hiciera falta ya os pondria el codigo.
Gracias.

Por pepito piscinas

106 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Dic 2008 08:09 am
en lugar de usar navigateToURL, usa loadMovie sobre un MC
tip:Es siempre mejor hacerse una función que pase como argumento el nombre de la imagen o película a cargar. Así, cambiando la función, cambiaremos el modo de mostrar la imagen. Vamos, en un principio esa función puede ser un trace, luego un navigateToURL luego un loadMovie, luego un loadMovie con transición, luego.....

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Dic 2008 11:35 am
Si supieras de algun tutorial o pudieras ser mas concreto te lo agradecedia, ya que soy novato y no creo que sea solo cambiar navigation URl por loadmovie, supongo que abra que declararlo y todo eso.

Por pepito piscinas

106 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Dic 2008 04:49 pm
Os dejo el codigo, a ver si alguien me puede decir como poner que al hacer click en las miniaturas se abra la foto digamos en un contenedor y no como una pagina web en otra ventana.

Código :

stop();
import fl.transitions.Tween;
import fl.transitions.easing.*;

var filename_list = new Array();
var url_list = new Array();
var url_target_list:Array = new Array();
var title_list = new Array();
var description_list = new Array();

var i:Number;
var tn:Number = 0;
var no_of_column:Number = 2;
var no_of_row:Number = 3;   // number of rows showing at a time
var no_of_extra_row:Number;
var scale_default:Number = 0.65;
var scale_over:Number = 0.9;//cambios tamaño
var tween_duration:Number = 0.5;
var new_row:Number = 0;

var total:Number;
var trabajos_xml:XML = new XML();
var folder:String = "thumbnails/";
var xml_loader:URLLoader = new URLLoader();
xml_loader.load(new URLRequest("trabajos.xml"));
xml_loader.addEventListener(Event.COMPLETE, create_thumbnail);

var thumbnail_group:MovieClip = new MovieClip();
this.addChild(thumbnail_group);

thumbnail_group.x = tn_group.x + 0.5 * scale_over * 140;
var default_y:Number = thumbnail_group.y = tn_group.y + 0.5 * scale_over * 100;
thumbnail_group.mask = tn_group_mask;

tn_group.visible = false;
fm_previous.visible = false;
fm_next.visible = false;

tn_title.text = "";
tn_desc.text = "";
tn_url.text = "";

function create_thumbnail(e:Event):void 
{
   trabajos_xml = XML(e.target.data);
   total = trabajos_xml.thumbnail.length();
   no_of_extra_row = Math.floor(total / no_of_column) - no_of_row;
   
   for( i = 0; i < total; i++ )
   {
      filename_list.push( trabajos_xml.thumbnail[i][email protected]() );
      url_list.push( trabajos_xml.thumbnail[i][email protected]() );
      url_target_list.push( trabajos_xml.thumbnail[i][email protected]() );
      title_list.push( trabajos_xml.thumbnail[i][email protected]() );
      description_list.push( trabajos_xml.thumbnail[i][email protected]() );
   }
   load_tn();
}

function load_tn():void
{
   var pic_request:URLRequest = new URLRequest( folder + filename_list[tn] );
   var pic_loader:Loader = new Loader();

   pic_loader.load(pic_request);
   pic_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, on_loaded);
   tn++;
}

function on_loaded(e:Event):void
{
   if( tn < total )
   {
      load_tn();
   }
   else
   {
      fm_previous.visible = true;
      fm_next.visible = true;
      fm_previous.addEventListener( MouseEvent.CLICK, to_previous );
      fm_next.addEventListener( MouseEvent.CLICK, to_next );
      this.addEventListener(MouseEvent.MOUSE_WHEEL, on_wheel );
   }

   var trabajos_bm:Bitmap = new Bitmap();
   var trabajos_mc:MovieClip = new MovieClip();

   trabajos_bm = Bitmap(e.target.content);
   trabajos_bm.x = - trabajos_bm.width * 0.5;
   trabajos_bm.y = - trabajos_bm.height * 0.5;
   trabajos_bm.smoothing = true;
   
   var bg_width = trabajos_bm.width + 10;
   var bg_height = trabajos_bm.height + 10;
   
   trabajos_mc.addChild(trabajos_bm);
   trabajos_mc.graphics.beginFill(0xFFFFFF);
   trabajos_mc.graphics.drawRect( - bg_width * 0.5, - bg_height * 0.5, bg_width, bg_height );
   trabajos_mc.graphics.endFill();
   
   trabajos_mc.name = "flashmo_" + thumbnail_group.numChildren;
   trabajos_mc.buttonMode = true;
   trabajos_mc.addEventListener( MouseEvent.MOUSE_OVER, tn_over );
   trabajos_mc.addEventListener( MouseEvent.MOUSE_OUT, tn_out );
   trabajos_mc.addEventListener( MouseEvent.CLICK, tn_click );
   trabajos_mc.scaleX = trabajos_mc.scaleY = scale_default;

   trabajos_mc.x = thumbnail_group.numChildren % no_of_column 
                  * ( bg_width + 10 ) * scale_default;
   trabajos_mc.y = Math.floor( thumbnail_group.numChildren / no_of_column ) 
                  * ( bg_height + 10 ) * scale_default;

   thumbnail_group.addChild(trabajos_mc);
}

function tn_over(e:MouseEvent):void
{
   var mc:MovieClip = MovieClip(e.target);
   var s_no:Number = parseInt(mc.name.slice(8,10));
   
   thumbnail_group.addChild(mc);

   new Tween(mc, "scaleX", Strong.easeOut, mc.scaleX, scale_over, tween_duration, true);
   new Tween(mc, "scaleY", Strong.easeOut, mc.scaleY, scale_over, tween_duration, true);
   
   tn_title.text = title_list[s_no];
   tn_desc.text = description_list[s_no];
   tn_url.text = url_list[s_no];
}

function tn_out(e:MouseEvent):void
{
   var mc:MovieClip = MovieClip(e.target);

   new Tween(mc, "scaleX", Strong.easeOut, mc.scaleX, scale_default, tween_duration, true);
   new Tween(mc, "scaleY", Strong.easeOut, mc.scaleY, scale_default, tween_duration, true);
   
   tn_title.text = "";
   tn_desc.text = "";
   tn_url.text = "";
}

function tn_click(e:MouseEvent):void
{
   var mc:MovieClip = MovieClip(e.target);
   var s_no:Number = parseInt(mc.name.slice(8,10));
   
   navigateToURL(new URLRequest(url_list[s_no]), url_target_list[s_no]);
}

function to_previous(e:MouseEvent):void
{
   if( new_row < 0 )
   {
      new_row++;
      new Tween( thumbnail_group, "y", Strong.easeOut, 
              thumbnail_group.y, default_y + new_row * 80, tween_duration, true );
   }
}

function to_next(e:MouseEvent):void
{
   if( Math.abs(new_row) < no_of_extra_row )
   {
      new_row--;
      new Tween( thumbnail_group, "y", Strong.easeOut, 
              thumbnail_group.y, default_y + new_row * 80, tween_duration, true );
   }
}

function on_wheel(e:MouseEvent):void
{
   if( e.delta > 0 )
      new_row++;
   else
      new_row--;

   if( new_row >= 0 )
      new_row = 0;
   else if( new_row < - no_of_extra_row )
      new_row = - no_of_extra_row;

   new Tween( thumbnail_group, "y", Strong.easeOut, 
           thumbnail_group.y, default_y + new_row * 80, tween_duration, true );
}

Por pepito piscinas

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 Dic 2008 06:25 pm
::glups:: Tienes razón, loadMovie es AS.2
debemos usar un Loader.

Vale, fijaté en tu función

Código ActionScript :

function tn_click(e:MouseEvent):void
{
   var mc:MovieClip = MovieClip(e.target);
   var s_no:Number = parseInt(mc.name.slice(8,10));
   navigateToURL(new URLRequest(url_list[s_no]), url_target_list[s_no]);
}

Esa función es la que se ejecuta cuando se le dá un click a un thumbail debido a que le añadistes un Listener en la línea

Código ActionScript :

trabajos_mc.addEventListener( MouseEvent.CLICK, tn_click );

Bah, esto último no es importante.
Creemos un objeto de la clase loader.

Código ActionScript :

//añádimos al principo de la clase, en la zona de declaración de variables, una variable de tipo Loader
var loader:Loader=null;

Después de la zona de declaración de variables, lo añades al stage

Código ActionScript :

loader=new Loader();
addChild(loader)

Ahora es sólo sustituir la función del getURL por algo como

Código ActionScript :

function tn_click(e:MouseEvent):void
{
   var mc:MovieClip = MovieClip(e.target);
   var s_no:Number = parseInt(mc.name.slice(8,10));
   loader.load(new URLRequest(url_list[s_no])
}

Vale, "queda muy cutre". entre otras cosas, habrá que "cerrarlo" de algún modo ¿qué tal con un click?

Código ActionScript :

//añadimos el listener
loader.addEventListener(MouseEvent.MOUSE_DOWN, cerrar);
private function cerrar(e:event):void{
  loader.unload();
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Dic 2008 07:50 pm
Ok, muchas gracias algo he conseguido avanzar, pero me quedan un par de detalles.

1º el ultimo listener donde lo pongo exactamente?lo he puesto en varios sitios y me da error.(que el atributo private solo se puede utilizar en algo de clases)
2º¿como puedo indicar al loader la posicion en la que salga?x e y?

Por pepito piscinas

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 02 Dic 2008 05:13 am
Bueno despues de unas pruebas ya se colocarlo donde quiera poniendo
loader.x=0
loader.y=0
pero el Eventlistener Down que me dice sigue dandome error.

Por pepito piscinas

106 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Dic 2008 08:15 am
yo es que me he hecho una clase Main (la Clase del codumento). La función debe ir dentro de la definición de Clase. Si pones el código en un frame "supongo" que le puedes quitar el private (pero no estoy seguro)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Feb 2010 09:15 pm
Perdona pero tengo el mismo problema que tu y practicamente quiero hacer lo mismo, he conseguido una plantilla flash de galeria pero cada vez que pulso una imagen me salta un link url, quisiera que me saliera dentro de un contenedor con loadmovie un swf. Te importaria decirme como lo has conseguido? gracias

Por goonie

12 de clabLevel



 

firefox

 

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