Comunidad de diseño web y desarrollo en internet online

onRelease en una instancia de una clase personal

Citar            
MensajeEscrito el 17 May 2006 02:18 pm
Hola,

No entiendo. Os explico: he creado una clase que me carga una imagen en un clip con efectos de precarga y pijadas. Instancio la clase, cuando hago un typeof, me sale que es un movie clip, tipo:

var album:AlbumFoto = new AlbumFoto();
var thumb:MovieClip = album.creaClip(bla,bla,bla);
trace(typeof(thumb)) ---> La salida es movieclip.

Ahora bien, si hago:

thumb.onRelease = function(){
...
}

Pues no funciona, no pasa nada, la instancia (que es un movieclip) no hace el onRelease!!!

Se me escapa algo?? Es por la clase??

Gracias

Por LK

21 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 May 2006 02:55 pm
Tu clase crea el movieClip en esa función creaClip, o lo usa? es decir internamente la clase hace un createEmptyMovieClip????
si no es así, es normal que nada ocurra, pues no se crea un MovieClip, simplemente declaraste una variable que referenciará a un MovieClip (cuando lo crees y se lo pases)

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

clabbrowser
Citar            
MensajeEscrito el 17 May 2006 03:10 pm
Sí, creaClip crea un clip:

Código :

public function crearClip(target:MovieClip,url:String,posx:Number,posy:Number,depth:Number,w:Number,h:Number):MovieClip {
      clipG = target.createEmptyMovieClip("clipG"+depth,target.getNextHighestDepth());
      clipG._x=posx;
      clipG._y=posy;
      cargarClip(url,clipG,target,posx,posy,w,h);
      return clipG;      
   }


Una vez creado el clip, cargo la imágen con cargarClip... pero no creo que sea por eso.....

Por LK

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 May 2006 04:10 pm
Nadie me puede echar una mano? Alguna pista de por donde tengo que investigar?? Publico toda la clase por si acaso:

Código :

class AlbumFoto {
   private var url:String;
   private var clipG:MovieClip;
   private var clipP:MovieClip;
   private var target:MovieClip;
   private var imageLoader:MovieClipLoader;
   private var cargadorGraf:MovieClip;
   private var progreso:Number;
   private var contenedor_txt:MovieClip;
   private var posx:Number;
   private var posy:Number;
   private var w:Number;
   private var h:Number;
   private var obj:Object;
   public var cargado:Boolean=false;
   
   public function AlbumFoto (){
   }
   
   public function crearClip(target:MovieClip,url:String,posx:Number,posy:Number,depth:Number,w:Number,h:Number):MovieClip {
      clipG = target.createEmptyMovieClip("clipG"+depth,target.getNextHighestDepth());
      clipG._x=posx;
      clipG._y=posy;
      cargarGrande(url,clipG,target,posx,posy,w,h);
      return clipG;      
   }
   
   
   private function cargarGrande(url:String,clipG:MovieClip,target:MovieClip,posx:Number,posy:Number,w:Number,h:Number):MovieClip {
      imageLoader = new MovieClipLoader();
      imageLoader.addListener(this);
      imageLoader.loadClip(url,clipG);
      cargadorGraf = target.createEmptyMovieClip("cargadorGraf"+target.getNextHighestDepth(),target.getNextHighestDepth());
      cargadorGraf.beginFill(0xFCD386,100);
      cargadorGraf.lineStyle(1,0xFCD386,100);
      cargadorGraf.lineTo(0,0);
      cargadorGraf.lineTo(w,0);
      cargadorGraf.lineTo(w,h);
      cargadorGraf.lineTo(0,h);
      cargadorGraf.lineTo(0,0);
      cargadorGraf.endFill();
      cargadorGraf._x=posx;
      cargadorGraf._y=posy;
      cargadorGraf._visible=false;
      contenedor_txt = target.createEmptyMovieClip("contenedor_txt",target.getNextHighestDepth());
      contenedor_txt._x=posx;
      contenedor_txt._y=posy;
      contenedor_txt.createTextField("txtPro",2,5,5,100,100);
      contenedor_txt.txtPro.setNewTextFormat(new TextFormat("Arial",11,0xAF925D));
      return clipG;
   }

   
   /*private function crearEfectoLoad(target:MovieClip,posx:Number,posy:Number,w:Number,h:Number):MovieClip{
      cargadorGraf = target.createEmptyMovieClip("cargadorGraf"+target.getNextHighestDepth(),target.getNextHighestDepth());
      cargadorGraf.beginFill(0xFCD386,100);
      cargadorGraf.lineStyle(1,0xFCD386,100);
      cargadorGraf.lineTo(0,0);
      cargadorGraf.lineTo(w,0);
      cargadorGraf.lineTo(w,h);
      cargadorGraf.lineTo(0,h);
      cargadorGraf.lineTo(0,0);
      cargadorGraf.endFill();
      cargadorGraf._x=posx;
      cargadorGraf._y=posy;
      cargadorGraf._visible=false;
      contenedor_txt = target.createEmptyMovieClip("contenedor_txt",target.getNextHighestDepth());
      contenedor_txt._x=posx;
      contenedor_txt._y=posy;
      contenedor_txt.createTextField("txtPro",2,0,0,100,100);
      contenedor_txt.txtPro.setNewTextFormat(new TextFormat("Arial",11,0xAF925D));
      //target.txtPro.text="hey que pasa??";
      return cargadorGraf;
   }*/
   
   public function getCargado():Boolean{
      return this.cargado;
   }
   
   private function setCargado(boleano:Boolean):Void{
      var cargado=boleano;
      trace("desde la clase: "+cargado);

   }
   
   private function onLoadStart(targetClip:MovieClip){


   }

   
   private function onLoadProgress(targetClip:MovieClip,bytesLoaded:Number,bytesTotal:Number){
      var progreso:Number = Math.floor((bytesLoaded/bytesTotal)*100);
      cargadorGraf._yscale=100-progreso;
      cargadorGraf._visible=true;

      contenedor_txt.txtPro.text=100-progreso;
      cargadorGraf._alpha=progreso;

   }
   
   private function onLoadInit(targetClip:MovieClip){
      cargadorGraf.removeMovieClip();
      contenedor_txt.removeMovieClip();
      imageLoader.removeListener(this);
      mx.transitions.TransitionManager.start(targetClip, {type:mx.transitions.Photo, direction:mx.transitions.Transition.IN, duration:1, easing:mx.transitions.easing.None.easeNone});

      imageLoader.removeListener(this);
      setCargado(true);
      cargadorGraf.removeMovieClip();
   }
   
   public function destroy():Void{
      clipG.removeMovieClip();
   }

Por LK

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 May 2006 10:51 pm
LK, tu problema, es un problema de tiempo, osea asignas el onRelease, antes de que exista el MovieClip y te lo devuelva la clase. Te propongo 2 soluciones que he probado para tí

Solución 1:

Dejas la clase como está pero en el .fla haces así:

Código :

var thumb:MovieClip = this.createEmptyMovieClip("thumb",this.getNextHighestDepth());
thumb._x=0;
thumb._y=0;
album.crearClip(thumb,"foto.jpg",0,0,1,1024,768);

thumb.onRelease = function()
{
   trace("Eureka");   
}


Y la solución 2 sería:

Modificas la clase dotandola de una llamada de callback para cuando hayas terminado de cargar, así

Código :

//...
   private var h:Number;
   private var obj:Object;
   public var cargado:Boolean=false;
   public var loadComplete:Function;  // <-- AKÍ
   
   public function AlbumFoto (){
//...

//...
private function onLoadInit(targetClip:MovieClip){
      cargadorGraf.removeMovieClip();
      contenedor_txt.removeMovieClip();
      imageLoader.removeListener(this);
      mx.transitions.TransitionManager.start(targetClip, {type:mx.transitions.Photo, direction:mx.transitions.Transition.IN, duration:1, easing:mx.transitions.easing.None.easeNone});
      setCargado(true);
      cargadorGraf.removeMovieClip();
     
     if(loadComplete != null)  // <-- AKÍ
      loadComplete();
 }



luego en el .fla llamarías así

Código :

var thumb:MovieClip = album.crearClip(this,"foto.jpg",0,0,1,1024,768);
album.loadComplete = function()
{
   trace("Complete");
   thumb.onRelease = function()
   {
      trace("Eureka");   
   }
}


Salu2 ;)

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

clabbrowser
Citar            
MensajeEscrito el 18 May 2006 08:51 am
Muchísimas gracias MorphX,

Que bueno, sobre todo la 2ª opción......porque la primera es lo que se me ocurrió en el metro cuando precisamente no estaba pensando en nada en concreto, y me pareció tan evidente que alucine de lo tontos que estamos cuando nos atascamos.

Precisamente iba a conectarme al foro para explicar esta opción y ridiculizarme en público....... :oops:

Me voy a enganchar a este foro :love: y si puedo intentaré ayudar en la medida que me sea posible..... :crap:

Por LK

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Jul 2006 09:16 am
weewe

Por andresk

1 de clabLevel



Genero:Masculino  

firefox

 

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