Lo entendi a medias :(
... alguna paage?�
saludos :)
----- Original Message -----
From: "a!e mu�oz" <[EMAIL PROTECTED]>
To: "[EMAIL PROTECTED] (E-mail)" <[EMAIL PROTECTED]>
Sent: Monday, February 18, 2002 1:18 PM
Subject: [flashmaestro] OOP y Herencia
>
> jelou...
>
> tras a�os de volverme loco con el tema, POR FIN he entendido
> c�mo funciona esto de la herencia en Flash...
>
> asi que, presa de la alegr�a que me invade, me dispongo a
> compartir con todos lo que he aprendido, con la intenci�n de
> que alguien se ahorre los dolores de cabeza que he sufrido :)
>
> se supone que es AS avanzado, asi que a los novatos les insto
> a que se salten este mail si no quieren acabar mal de la cabeza :)
>
> nota: en la lista [FlashCoders] hay guerra encendida sobre
> cual es la mejor manera de crear herencia en ActionScript,
> pero yo no le encuentro problemas a esta que cuento...
>
> aqui va la cosa:
>
>
> HERENCIA EN FLASH
> por [EMAIL PROTECTED] con la inestimable ayuda de Dave Yang,
> Tatsuo, Branden Hall, Robert Penner, file://klas, Moock, y todos los que
> me han echado broncas por preguntar burradas :)
>
> 1) �QUE ES HERENCIA?
> En OOP, llamamos herencia a un mecanismo por el cual las clases
> "heredan" m�todos y propiedades de una clase superior llamada,
> en un derroche de imaginaci�n, "super"
>
> 2) �PARA QUE SIRVE?
> Pongamos por caso que estamos programando un juego. Tenemos una
> clase con m�todos para el movimiento. Luego tenemos en pantalla
> una nave, 8 alien�genas, 14 asteroides y 4 c�psulas de bonus.
>
> �Tenemos que poner m�todos de movimiento en todos?
>
> No...
>
> Digamos que si tuviera una clase llamada "movimiento", con m�todos
> de movimiento, si de alguna manera pudiera hacer que mi nave, mis
> alien�genas, mis asteroides y mis c�psulas pudieran usar esas clases
> me ahorraria todo el trabajo...
>
> 3) �COMO FUNCIONA?
> Esto es tan facil que casi da miedo (y me da verguenza reconocer lo
> que he tardado en darme cuenta de c�mo es esto...)
>
> Crearemos un m�todo general para todos los objetos, que sirva para
> heredar de una clase superior:
>
> Object.prototype.implements = function(c, args) {
> this.super = c;
> this.super(args);
> delete this.super;
> this.__proto__ = c.prototype;
> }
>
> Simple, �no? :)
>
> 4) EJEMPLO A
>
> function A(){
> this.propA = "A";
> }
>
> function B(){
> this.implements(A);
> this.propB = "B";
> }
> function C(){
> this.implements(B);
> this.propC = "C";
> }
>
> myC = new C();
> trace(myC.propA); // "A"
> trace(myC.propB); // "B"
> trace(myC.propC); // "C"
>
> 5) EJEMPLO B (Un poco mas complejo :)
>
> function movimiento(velocidad){
> this.velocidad = velocidad;
> this.arriba = function(){
> this._y -= this.velocidad;
> }
> this.abajo = function(){
> this._y += this.velocidad;
> }
> this.izquierda = function(){
> this._x -= this.velocidad;
> }
> this.derecha = function(){
> this._x += this.velocidad;
> }
> }
>
> function asteroide(tama�o,velocidad){
> this.implements(movimiento,velocidad);
> this.tama�o = tama�o;
> }
>
> function nave(color,velocidad){
> this.implements(movimiento,velocidad);
> this.color = color;
> }
>
> function alienigena(velocidad){
> this.implements(movimiento,velocidad);
> this.bichoFeoYMalo = true;
> }
>
> miNave = new nave("azul",100);
> miAlienigena = new alienigena(90);
> miAsteroide = new asteroide(100,25);
>
> miNave, miAlienigena y miAsteroide tienen ahora los m�todos
> arriba(), abajo(), izquierda() y derecha()
>
> y en fin, a mi me ha venido de co�a en un proyecto, supongo que alguien
> le sacar� m�s provecho que yo :)
>
>
> [EMAIL PROTECTED] | bomber-studios.com | see less, think more
>
>
>
>