Comunidad de diseño web y desarrollo en internet online

sprite-movieclip, problema de clases

Citar            
MensajeEscrito el 22 Jun 2009 06:32 pm
bueno tengo un problema q me hace doler la cabeza desde hace un buen tiempo y no logro solucionarlo, espero q alguno de ustedes pueda ayudarme.
he creado un pequeño movieclip que me sirve de boton y en el linkage lo enlace con una clase externa que escribi y que me sirve para darle comportamientos; ademas en el base class le puse sprite porque no necesita linea de tiempo. Pero aqui viene el problema. Cuando quiero llamar una funcion de ese boton, (definido en la clase, obvio esta en public) pongo algo como esto en el main timeline donde tengo mis botones:

Sprite(getChildByName("boton1")).funciondelboton();

pero me sale "undefined method funciondelboton in static class sprite".
lo raro es que si cambio todas las definiciones de sprite a movieclip si funciona, osea:

MovieClip(getChildByName("boton1")).funciondelboton();

Pero no entiendo; si movieclip desciende de sprite, porque no funciona el casting con sprite, q es la superclase de MovieClip? intente incluso con displayobjectcontainer, con interactiveobject y nada. solo funciona con movieclip.
alguien puede explicarme que esta pasando aqui, que estoy haciendo mal?
muchas gracias por adelantado.
saludos

Por nazcaline

272 de clabLevel

3 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Jun 2009 03:04 am
Hola

Ese sprite... lo creaste en el escenario como MovieClip y luego en la biblioteca lo cambiaste a Sprite? si es asi puede q en el escenario q haya quedado q es un MovieClip (fijate q en el panel de propierdades podes cambiarle el tipo de objeto q es).

Por otro lado... al sprite lo vinculaste a una clase q vos definiste... esa clase extiende de Sprite o de MovieClip?

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 23 Jun 2009 06:39 am

si movieclip desciende de sprite, porque no funciona el casting con sprite, q es la superclase de MovieClip?

Está un poco confuso: MovieClip "extiende" de Sprite -lo que quiere decir que, además de todas las propiedades y métodos de Sprite, un MovieClip es "algo más"-.

Técnicamente, tu "conversión de cast" debería ser a la Clase de tu "boton", si imagino que tu botón es de la Clase "BotonPropio", deberíamos escribir estrictamente

Código ActionScript :

BotonPropio(getChildByName("boton1")).funciondelboton();
//ó
(getChildByName("boton1") as BotonPropio).funciondelboton();

El motivo de usar "MovieClip" es porque es una clase propia de Flash que es "NO SELLADA", esto es admite propiedades y métodos dinámicos, vamos, nunca dará error

Código ActionScript :

var mc:MovieClip=new MovieClip()
mc.variable=56;
mc.funcion1();
//si embargo NO podemos hacer
var sprite:Sprite=new Sprite();
sprite.variable=56 //<---error, sólo admito las propiedades de la Clase Sprite
sprite.funcion1() //<--error, sólo admito los métodos de la Clase Sprite

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Jun 2009 09:03 pm
Eliseo: gracias por solucionar mi problema, te pasaste...
te cuento que antes de leer tu respuesta me di cuenta q el problema era justamente ese, que solo movieclip es una clase no sellada, por eso era que los demas clases no aceptaban la funcion!! que tonto, como no me di cuenta antes...lo que si no se me habia ocurrido era "castear" la informacion pero hacia el tipo de clase q yo habia creado...eso si no me lo decias yo ni por aqui, sabes y sin embargo es obvio. funciona de maravillas...puse mi clase que extienda de sprite y luego castie mi boton y listo, ahora si va.
saludos!! ^^

Por nazcaline

272 de clabLevel

3 tutoriales

Genero:Masculino  

firefox

 

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