Comunidad de diseño web y desarrollo en internet online

Cargar una imagen en un Clip con AS3

Citar            
MensajeEscrito el 15 Jun 2010 04:41 pm
Bueno, ahora que lo he conseguido no me parece tan difícil pero llevaba varios días intentándolo sin éxito, osea que voy a subir el código por si puede ayudar a alguien .

Lo primero es especificar que no voy a crear el MovieClip desde el código , si no que voy a usar uno que he dibujado en un fotograma y que por tanto puedo interpolar ( por ejemplo ) fácilmente .

Pues eso lo primero dibujamos un clip en la pantalla y le damos un nombre de instancia ImagenIntro en mi caso ...

Y después añadimos el código en el siguiente fotograma , uno de los problemas que yo encontraba al intentar este proceso es que me daba un error de Objeto fuera de linea de tiempo de compilación o algo así ... y no era mas que parece ser que Flash lee primero el código y luego la pantalla , de tal forma si intentas crear el MC en el mismo fotograma que el código AS3 no lo leerá , ya que cuando empiece a leer el código el MovieClip no existiría aún . Así que yo creo el Movieclip en un fotograma y en el fotograma siguiente pongo el código :

Código ActionScript :

//Primero los imports , si utilizáis Flash CS5 a medida que tecleis el código el los creará automáticamente ... 
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Shape;
import fl.transitions.*;
import fl.transitions.easing.*;

// Declaro ImagenIntro como un MovieClip , por lo que tengo entendido Flash con solo el nombre de instancia no 
// diferencia si se trata de un MovieClip o de un Sprite 
var ImagenIntro:MovieClip ;
// Declaramos ldr como una variable que contendrá un loader 
var ldr:Loader = new Loader();

//Asignamos a ImagenIntro la representación de ldr 
ImagenIntro.loader=(ImagenIntro.addChild(ldr));
// Declaramos las variables que van a contener la dirección de la fotografía que queremos cargar 
var url:String = "Flash/Images/Foto_Intro.jpg";  
var urlReq:URLRequest = new URLRequest(url);
// Cargamos a ImagenIntro la dirección de la fotografía 
ImagenIntro.loader.load(urlReq);

//TransitionManager carga el efecto Wipe en el mc mc_intro. Es un efecto para la imagen . 
TransitionManager.start(ImagenIntro , {type:Wipe});

//Creamos una función , que se cargará cuando el contendor ldr comience a cargar la imagen , esto seria 
//incluso antes de estar asignado al MovieClip , yo lo utilizo para redimensionar la imagen 
ldr.contentLoaderInfo.addEventListener(Event.INIT, iniciocarga);
      function iniciocarga(event:Event)
      {
         ldr.width = 935;
         ldr.height = 300;
      }
//Hasta aquí ya tendriamos la imagen en pantalla , pero ademas a mi me interesa usarla como botón una vez cargada 
//Asi que creo una funcion sobre el Movieclip ImagenIntro , para cuando el evento de ratón MouseDown se efectúe . 
ImagenIntro.loader.addEventListener(MouseEvent.MOUSE_DOWN, moverintro);
      function moverintro(e:Event):void 
      { 
         gotoAndPlay(71);
         ImagenIntro.loader.removeEventListener(MouseEvent.MOUSE_DOWN, moverintro);
//Añado esta linea borrando la función por que solo quiero que se pueda clicar una vez en el movieclip . 
      }
stop();



A mi este código me sirve como intro de mi pagina , www.cesarsantosgonzalez.com ( esta esta programada en Flash8 ) pero el resultado seria el mismo . La novedad es que con este código en AS3 cuando me canse de la foto de inicio solo tengo que subir una nueva al host con el nombre de la anterior sobreescribiéndola y sin tocar nada más ya saldría la nueva en pantalla .

Supongo que todo esto puede ser más fácil de hacer, pero así funciona.

Espero que les sea útil . Un Saludo .

Por McSantos

5 de clabLevel



 

msie8
Citar            
MensajeEscrito el 17 Jun 2010 06:46 am
Vaya, de entrada no entiendo en sí que buscas con el tip. Me parece que seria lo mismo hacer escribir lo siguiente y sin meterse contra fotogramas o elementos pre-creados:

Código ActionScript :

var loader:Loader = new Loader(); 
var imageRequest:URLRequest = new URLRequest("imagen ext"); 
// 
var movieclip:MovieClip = new MovieClip(); 
movieclip.addEventListener(MouseEvent.CLICK, function(event:MouseEvent){
   trace("click!");
});
//
loader.load(imageRequest);  
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(event:Event):void { 
   movieclip.addChild(loader); 
});
//
addChild(movieclip);


Insisto, quizá solo este confundido y haya entendido diferente la intención de tu código pero a simple vista pareciera que solo buscas poner un objeto Loader dentro de otro MovieClip y añadirle algún evento. Sí no es así, le dejo la labor de corregirme a algún catedrático reivindicador que se pasee por aquí.

Saludos.

Por M@U

BOFH

6210 de clabLevel

34 tutoriales
5 articulos

Genero:Masculino   Héroes Bastard Operators From Hell Editores

Bate jubilado de Cristalab

chrome
Citar            
MensajeEscrito el 19 Jun 2010 09:59 am
Pues no lo se muy bien por que soy nuevo , pero me parece que si dibujo el Mc desde el codigo ... luego no puedo hacerle una interpolacion por ejemplo ...

Un Saludo ...

Por McSantos

5 de clabLevel



 

msie8
Citar            
MensajeEscrito el 20 Jun 2010 03:44 am
while ( cristalab.alive() )
{
cristalab.tipsQuality--;
}

Por pepe-blog

Invitado



 

firefox
Citar            
MensajeEscrito el 20 Jun 2010 01:14 pm
WTF?

Por X-TUS

94 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Jun 2010 02:03 pm
De hecho no hace falta ni eso:


var loader:Loader = new Loader();
var imageRequest:URLRequest = new URLRequest("imagen ext");
//
var movieclip:MovieClip = new MovieClip();
movieclip.addEventListener(MouseEvent.CLICK, function(event:MouseEvent){
trace("click!");
});
//
loader.load(imageRequest);
movieclip.addChild(loader);
//
addChild(movieclip);

Por UChLab-blog

Invitado



 

chrome

 

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