|
He conseguido descargarme un archivo .fla de una galeria de imagenes circular, el problema que tengo es que cada vez que se pulsa una imagen me salta un url, sacado de un archivo XML. Me gustaria, que cada vez que pulse la imagen me cargara un SWF en un contenedor, ya que quiero darle una funcion diferente a la galería. os dejo el texto de accion, os agradeceria cualquier ayuda pues es para una página de apoyo a la cultura con fines sociales, vamos gratuita y mis conocimientos son basicos. Gracias a todos. flashmo_graphic.visible = false; link_title.text = ""; link_description.text = ""; loading_info.text = "cargando..."; var folder:String = "swf/thumbnails/"; var speed:Number = 3; // range from 1 to 10 var radius_x:Number = 350; var radius_y:Number = 100; var tn_border:Number = 5; var tn_border_color:Number = 0xFFFFFF; var dynamic_speed:Number = 0.00006; var ratio:Number; var i:Number; var tn:Number = 0; var current_no:Number = 0; var total_items:Number; var flashmo_xml:XML; var flashmo_tn_list = new Array(); var mc:MovieClip = new MovieClip(); var thumbnail_group:MovieClip = new MovieClip(); this.addChild(thumbnail_group); if( speed > 10 || speed < 1 ) speed = 5; function load_gallery(xml_file:String):void { var xml_loader:URLLoader = new URLLoader(); xml_loader.load( new URLRequest( xml_file ) ); xml_loader.addEventListener(Event.COMPLETE, create_gallery); } function create_gallery(e:Event):void { flashmo_xml = new XML(e.target.data); total_items = flashmo_xml.thumbnail.length(); for( i = 0; i < total_items; i++ ) { flashmo_tn_list.push( { filename: flashmo_xml.thumbnail[i].filename.toString(), title: flashmo_xml.thumbnail[i].title.toString(), description: flashmo_xml.thumbnail[i].description.toString(), url: flashmo_xml.thumbnail[i].url.toString(), target: flashmo_xml.thumbnail[i].target.toString() } ); } load_tn(); } function load_tn():void { var pic_request:URLRequest = new URLRequest( folder + flashmo_tn_list[tn].filename ); var pic_loader:Loader = new Loader(); pic_loader.load(pic_request); pic_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, tn_progress); pic_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, tn_loaded); tn++; } function tn_progress(e:ProgressEvent):void { loading_info.text = "Cargando " + tn + " de " + total_items; } function tn_loaded(e:Event):void { var flashmo_tn_bm:Bitmap = new Bitmap(); var flashmo_tn_mc:MovieClip = new MovieClip(); flashmo_tn_bm = Bitmap(e.target.content); flashmo_tn_bm.smoothing = true; flashmo_tn_bm.x = - flashmo_tn_bm.width * 0.5; flashmo_tn_bm.y = - flashmo_tn_bm.height * 0.5; var bg_width:Number = flashmo_tn_bm.width + tn_border * 2; var bg_height:Number = flashmo_tn_bm.height + tn_border * 2; if( tn_border > 0 ) { flashmo_tn_mc.graphics.beginFill(tn_border_color); flashmo_tn_mc.graphics.drawRect( - bg_width * 0.5, - bg_height * 0.5, bg_width, bg_height ); flashmo_tn_mc.graphics.endFill(); } flashmo_tn_mc.addChild(flashmo_tn_bm); flashmo_tn_mc.name = "flashmo_tn_" + thumbnail_group.numChildren; flashmo_tn_mc.buttonMode = true; flashmo_tn_mc.y = -900; thumbnail_group.addChild( flashmo_tn_mc ); if( tn < total_items ) load_tn(); else activate_carousel(); } function activate_carousel():void { for( i = 0; i < total_items; i++ ) { mc = MovieClip( thumbnail_group.getChildByName("flashmo_tn_" + i) ); mc.addEventListener( MouseEvent.MOUSE_OVER, tn_over ); mc.addEventListener( MouseEvent.MOUSE_OUT, tn_out ); mc.addEventListener( MouseEvent.CLICK, tn_click ); mc.addEventListener( Event.ENTER_FRAME, tn_update ); mc.angle = i * ( Math.PI * 2 / total_items ); } stage.addEventListener( MouseEvent.MOUSE_MOVE, on_move ); stage.addEventListener( Event.ENTER_FRAME, on_update ); loading_info.text = ""; } function tn_update(e:Event):void { mc = MovieClip(e.target); mc.x = Math.cos(mc.angle) * radius_x; mc.y = Math.sin(mc.angle) * radius_y; ratio = ( mc.y + radius_y ) / ( radius_y * 2 ); if( ratio < 0.3 ) ratio = 0.3; mc.scaleX = mc.scaleY = ratio; mc.angle += dynamic_speed; } function tn_over(e:MouseEvent):void { mc = MovieClip(e.target); current_no = parseInt(mc.name.slice(11,13)); link_title.text = flashmo_tn_list[current_no].title; link_description.text = flashmo_tn_list[current_no].description; } function tn_out(e:MouseEvent):void { link_title.text = ""; link_description.text = ""; } function tn_click(e:MouseEvent):void { mc = MovieClip(e.target); current_no = parseInt(mc.name.slice(11,13)); navigateToURL( new URLRequest( flashmo_tn_list[current_no].url ), flashmo_tn_list[current_no].target ); } function on_move(e:MouseEvent):void { dynamic_speed = mouseX * speed * 0.00003; } function on_update(e:Event):void { sort_group(thumbnail_group); } function sort_group(group:MovieClip):void { var i:int; var child_list:Array = new Array(); i = group.numChildren; while(i--) { child_list[i] = group.getChildAt(i); } child_list.sortOn("y", Array.NUMERIC); i = group.numChildren; while(i--) { if( child_list[i] != group.getChildAt(i) ) { group.setChildIndex(child_list[i], i); } } } |
|
|
Hola... revisando el código que expones aki encontre el la linea que debes quitar (o cambias en este caso para que te salga la imagen en otro contenedor). Código :
function tn_click(e:MouseEvent):void
{
mc = MovieClip(e.target);
current_no = parseInt(mc.name.slice(11,13));
navigateToURL( new URLRequest( flashmo_tn_list[current_no].url ),
flashmo_tn_list[current_no].target );
}
La linea que debes quitar es la siguiente: Código : navigateToURL( new URLRequest( flashmo_tn_list[current_no].url ), Bueno.. vayamos al caso... para lograr que se te cargue la imagen en otro contenedor tienes que hacer un objeto de tipo URLRequest(), y la pasas la direccion del fichero que deseas cargar. Posteriormente debes hacer un objeto de tipo URLLoader para que te cargue la imagen. Código : var urlReq:URLRequest = new URLRequest(flashmo_tn_list[current_no].url); var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, funcImgLoaded); urlLoader.load(urlReq); La linea [urlLoader.addEventListener(Event.COMPLETE, funcImgLoaded);] es la encargada de hacer el listener del evento que se dispara cuando se termina de cargar la imagen. Pero tienes que tener creada una funcion para que se maneje el evento que se disparó. Código :
private function funcImgLoaded(e:Event):void{
//aki dentro capturas el objeto que se cargó de la siguiente manera y trabajas con el como lo desees
//e.target
}
Te recomiendo que busques en la ayuda del flash para que veas los ejemplos que se muestran, o revisa en el código del ejemplo que descargaste de flashmo.com, que en el vienen muchos ejemplos de como trabajas con esto que te expliqué anteriormente. Saludos... P. |
|
| He hecho lo que me pones y creo que la cosa me ha ido peor pues me da bastantes errores, no entiendo mucho de AS3 la verdad, tan solo quiero que cuando pulse una imagen se cargue en un contenedor un archivo externo swf. Podrias ponerme exactamente el codigo si no es mucho pedir, como te digo soy un cero a la izquierda en esto, gracias. |
|
|
Código : var contenedor = new Loader();
contenedor.load(new URLRequest("flashmo_tn_list[current_no].swf"));
addChild(contenedor);he puesto esto en el codigo, la variable en su zona y el resto en la linea que me digiste que quitase, no consigo que me funcione, me da error en que no encuentra la url, voy bien??????????? |
|
|
Hola... bueno.. suponiendo que tengas una palicula en la cual desees cargar la imagen a la que le das el click, a lo mejor esto que tengo aquí te pueda ayudar. El codigo que te voy a poner a continuación es el que va dentro del swf que va a ser el encargado de cargar las imagenes Código : public function loadImage(urlImg:String):void {
var urlReq:URLRequest = new URLRequest(urlImg);
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, funcImgLoaded);
urlLoader.load(urlReq);
}
//contenedor que va a cargar la imagen
private var contenedor:MovieClip = new MovieClip();
this.addChild(contenedor);
private function funcImgLoaded(e:Event):void{
var picture_bm:Bitmap = new Bitmap();
picture_bm = Bitmap(e.target.content);
picture_bm.smoothing = true;
contenedor.addChild(picture_bm);
}una vez que tengas ese codigo en la pelicula la publicas y dentro de la pelicula que tienes la funcion tn_click pones el siguiente código. Código : //codigo que tienes que poner en la función tn_click
//haces una variable que es la que va a contener la url de la imagen seleccionada
private var urlPhoto:String = "";
function tn_click(e:MouseEvent):void {
mc = MovieClip(e.target);
current_no = parseInt(mc.name.slice(11,13));
urlPhoto = flashmo_tn_list[current_no].url;
var myLoader:Loader = new Loader();
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
myLoader.load(new URLRequest("url del swf que vas a cargar"));
}
private function swfLoaded(e:Event):void{
var mc:MovieClip = MovieClip(e.target.content);
this.addChild(mc);
//aqui llamas al metodo que tienes definido dentro del swf para cargar la imagen pasándole la url de la imagen
mc.loadImage(urlPhoto);
}Espero que te sirva... Saludos... P. |
|