Re: [ASNativos] [AS3] Extendiendo Sprite
Pues de nuevo en casa, efectivamente el problema era la visibilidad de los métodos entre clases que están en diferentes packages. Para el que venga detrás, si quieres extender de una clase que está en otro package, en la clase principal tienes que declarar el método como protected. Y en la clase hija tienes que declarar el método como overrride protected. Eso sin contar con que el tipo devuelto por la función y el número de parámetros *tienen* que coincidir exactamente. Gracias familia. On Dec 14, 2007 9:39 AM, Zárate [EMAIL PROTECTED] wrote: Vale, aunque no tengo el código delante, creo que es el problema de la visibilidad a otros packages. Porque la clase principal está en tv.zarate.app.* y la que extiende en tv.zarate.projects.* así que tendré que poner protected. Gracias por el apunte : ) Ahora, el compilador podría ser un poco más clarito y decir algo como: Pero joder, no te das cuenta que tienes que poner protected??? Está en el libro de Moock, página XXX. :) Y sobre composición/herencia ya me las apañaré para usar composición :D Gracias! On Dec 14, 2007 9:22 AM, Joseba Alonso [EMAIL PROTECTED] wrote: Buenas, Yo estoy Xavi, creo que el problema es que las estas definiendo en internal, igual no los métodos, que eso estarás acostumbrado en AS2 a ponerlos con atributo, pero sí la propia clase, que era costumbre no marcarla con ningún atributo. Tienes puesto class Application en vez de public class Application? Otra cosa que me extraña es lo del tema de la inicialización. En AS2 siempre ha habido un montón de problemas con eso, pero en AS3 a mi ya no me dan guerra, es decir, joder, se puede utilizar el constructor de un Sprite para empezar a hacer cosas, no hace falta ya esperar a un onLoad ni un fotograma, ni nada parecido. ¿Dónde has leído eso? Suerte con AS3, es totalmente distinto siendo el mismo lenguaje, hay que re-educarse en un monton de cosas!! Pero merece la pena... Joseba Alonso Pérez www.sidedev.net www.5dms.com -Mensaje original- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Zárate Enviado el: jueves, 13 de diciembre de 2007 23:47 Para: ASNativos Asunto: [ASNativos] [AS3] Extendiendo Sprite Buenas! Ando trasteando lo que puedo con AS3 y como es normal me encuentro con cosas raras. Para empezar no uso ni Flex ni el IDE de Flash, sólo AS3. Por lo que parece, extender de Sprite/MovieClip está de moda. Yo en AS2 era fan de NO hacerlo utilizando composición y tal. Como digo, todo lo que me encuentro en AS3 no funciona así. Para muestra, este post de Moock: http://www.moock.org/blog/archives/000248.html Acepto barco y extiendo de Sprite. Mi idea es: - Crear una clase básica llamada Application que extiende de Sprite. - Que todas mis aplicaciones extiendan de Application para reusar código. Vamos, lo normal. Pues no me cuadran las cuentas. Si intento llamar a un método de Application desde una clase hija, me encuentro con esto: Call to a possibly undefined method Buscando en Google la discusión se centra en problemas de inicialización, pero está todo encuadrado en gente usando Flex, por lo que no me vale. Y si intento sobre-escribir un método de la clase padre así: override private function wadus():void{} Me tira esto el compilador: Method marked override must override another method El nombre del método y coincide. También el número de parámetros y el tipo devuelto. No sé, tiene que ser algo de primero de AS3, pero no lo veo. Gracias! -- Juan Delgado - Zárate http://zarate.tv http://dandolachapa.com http://loqueyosede.com - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com - - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com - -- Juan Delgado - Zárate http://zarate.tv http://dandolachapa.com http://loqueyosede.com -- Juan Delgado - Zárate http://zarate.tv http://dandolachapa.com http://loqueyosede.com - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com -
Re: [ASNativos] [AS3] Extendiendo Sprite
Ummm ... No se que ocurre, pero no he recibido el mensaje de Zarate , lo he tenido que leer a partir de esta respuesta. No se pueden sobreescribir metodos privados, unicamente publicos o protected, tal como comenta Javi Fernandez. En cuanto al dilema herencia vs composicion, como yo era de los de herencia, estoy encantao con AS3 :D Salu2! Fede. El 14/12/2007, a las 1:25, xavier escribió: Buenas Hola Zárate ¿Has puesto algún modificador de acceso delante de la declaración del método? Lo digo porque ahora en AS3 cualquier clase, método o propiedad por defecto lo declara como internal lo cual quiere decir que sólo hay visibilidad para dichos métodos dentro de un mismo package. Si por un casual tus subclases se encontrasen en un package distinto, no tendrían acceso a dicho método. En dicho caso, tendrías que usar o bien protected que haría visible el método en toda la cadena de herencia (aunque estén en distintos packages) o por supuesto public Si no es eso, me dejas descolocado... P.D Yo también era Fan de la composición y la verdad es que me estoy acostumbrando bstante bien a extender de MC. *** REPLY SEPARATOR *** On 13/12/2007 at 22:47 Zárate wrote: Buenas! Ando trasteando lo que puedo con AS3 y como es normal me encuentro con cosas raras. Para empezar no uso ni Flex ni el IDE de Flash, sólo AS3. Por lo que parece, extender de Sprite/MovieClip está de moda. Yo en AS2 era fan de NO hacerlo utilizando composición y tal. Como digo, todo lo que me encuentro en AS3 no funciona así. Para muestra, este post de Moock: http://www.moock.org/blog/archives/000248.html Acepto barco y extiendo de Sprite. Mi idea es: - Crear una clase básica llamada Application que extiende de Sprite. - Que todas mis aplicaciones extiendan de Application para reusar código. Vamos, lo normal. Pues no me cuadran las cuentas. Si intento llamar a un método de Application desde una clase hija, me encuentro con esto: Call to a possibly undefined method Buscando en Google la discusión se centra en problemas de inicialización, pero está todo encuadrado en gente usando Flex, por lo que no me vale. Y si intento sobre-escribir un método de la clase padre así: override private function wadus():void{} Me tira esto el compilador: Method marked override must override another method El nombre del método y coincide. También el número de parámetros y el tipo devuelto. No sé, tiene que ser algo de primero de AS3, pero no lo veo. Gracias! -- Juan Delgado - Zárate http://zarate.tv http://dandolachapa.com http://loqueyosede.com - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com - __ NOD32 2721 (20071213) Information __ This message was checked by NOD32 antivirus system. http://www.eset.com - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com - - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com -
Re: [ASNativos] [AS3] Extendiendo Sprite
Buenas, Yo estoy Xavi, creo que el problema es que las estas definiendo en internal, igual no los métodos, que eso estarás acostumbrado en AS2 a ponerlos con atributo, pero sí la propia clase, que era costumbre no marcarla con ningún atributo. Tienes puesto class Application en vez de public class Application? Otra cosa que me extraña es lo del tema de la inicialización. En AS2 siempre ha habido un montón de problemas con eso, pero en AS3 a mi ya no me dan guerra, es decir, joder, se puede utilizar el constructor de un Sprite para empezar a hacer cosas, no hace falta ya esperar a un onLoad ni un fotograma, ni nada parecido. ¿Dónde has leído eso? Suerte con AS3, es totalmente distinto siendo el mismo lenguaje, hay que re-educarse en un monton de cosas!! Pero merece la pena... Joseba Alonso Pérez www.sidedev.net www.5dms.com -Mensaje original- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Zárate Enviado el: jueves, 13 de diciembre de 2007 23:47 Para: ASNativos Asunto: [ASNativos] [AS3] Extendiendo Sprite Buenas! Ando trasteando lo que puedo con AS3 y como es normal me encuentro con cosas raras. Para empezar no uso ni Flex ni el IDE de Flash, sólo AS3. Por lo que parece, extender de Sprite/MovieClip está de moda. Yo en AS2 era fan de NO hacerlo utilizando composición y tal. Como digo, todo lo que me encuentro en AS3 no funciona así. Para muestra, este post de Moock: http://www.moock.org/blog/archives/000248.html Acepto barco y extiendo de Sprite. Mi idea es: - Crear una clase básica llamada Application que extiende de Sprite. - Que todas mis aplicaciones extiendan de Application para reusar código. Vamos, lo normal. Pues no me cuadran las cuentas. Si intento llamar a un método de Application desde una clase hija, me encuentro con esto: Call to a possibly undefined method Buscando en Google la discusión se centra en problemas de inicialización, pero está todo encuadrado en gente usando Flex, por lo que no me vale. Y si intento sobre-escribir un método de la clase padre así: override private function wadus():void{} Me tira esto el compilador: Method marked override must override another method El nombre del método y coincide. También el número de parámetros y el tipo devuelto. No sé, tiene que ser algo de primero de AS3, pero no lo veo. Gracias! -- Juan Delgado - Zárate http://zarate.tv http://dandolachapa.com http://loqueyosede.com - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com - - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com -
Re: [ASNativos] [AS3] Extendiendo Sprite
Buenas Hola Zárate ¿Has puesto algún modificador de acceso delante de la declaración del método? Lo digo porque ahora en AS3 cualquier clase, método o propiedad por defecto lo declara como internal lo cual quiere decir que sólo hay visibilidad para dichos métodos dentro de un mismo package. Si por un casual tus subclases se encontrasen en un package distinto, no tendrían acceso a dicho método. En dicho caso, tendrías que usar o bien protected que haría visible el método en toda la cadena de herencia (aunque estén en distintos packages) o por supuesto public Si no es eso, me dejas descolocado... P.D Yo también era Fan de la composición y la verdad es que me estoy acostumbrando bstante bien a extender de MC. *** REPLY SEPARATOR *** On 13/12/2007 at 22:47 Zárate wrote: Buenas! Ando trasteando lo que puedo con AS3 y como es normal me encuentro con cosas raras. Para empezar no uso ni Flex ni el IDE de Flash, sólo AS3. Por lo que parece, extender de Sprite/MovieClip está de moda. Yo en AS2 era fan de NO hacerlo utilizando composición y tal. Como digo, todo lo que me encuentro en AS3 no funciona así. Para muestra, este post de Moock: http://www.moock.org/blog/archives/000248.html Acepto barco y extiendo de Sprite. Mi idea es: - Crear una clase básica llamada Application que extiende de Sprite. - Que todas mis aplicaciones extiendan de Application para reusar código. Vamos, lo normal. Pues no me cuadran las cuentas. Si intento llamar a un método de Application desde una clase hija, me encuentro con esto: Call to a possibly undefined method Buscando en Google la discusión se centra en problemas de inicialización, pero está todo encuadrado en gente usando Flex, por lo que no me vale. Y si intento sobre-escribir un método de la clase padre así: override private function wadus():void{} Me tira esto el compilador: Method marked override must override another method El nombre del método y coincide. También el número de parámetros y el tipo devuelto. No sé, tiene que ser algo de primero de AS3, pero no lo veo. Gracias! -- Juan Delgado - Zárate http://zarate.tv http://dandolachapa.com http://loqueyosede.com - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com - __ NOD32 2721 (20071213) Information __ This message was checked by NOD32 antivirus system. http://www.eset.com - ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com -