Hola lista
no pretendo levantar la polémica herencia vs composición, pero estoy tratando
de hacer algo por composición que me resultaba muy cómodo por herencia, pero me
gustaría poder valorar las dos posibilidades para ver cual me resulta mejor.
En aplicaciones sencillas sin ninguna estructura de control por clases ni
patrones de diseño, muchas veces me resulta muy util hacer un mc de una clase
que extienda de MovieClip (he avisado que no deseo polémica... :), y querria
ver su misma implementación por composición.
Antes me resultaba muy cómodo acceder a una instancia de un mc y decirle
circulo1.mover();
y el circulo1 va y se mueve :)
Ahora por composición tengo que acceder a la instancia que contiene una
referencia del mc en el escenario
var c1:Circulo = new Circulo(circulo1);
c1.mover();
Le veo sus ventajas, pero ahora me tengo que acordar de que c1 es la intancia
que "tiene-a" circulo1, y es lo unico que no me gusta.
Se que podria hacer una clase Controlador que supiese las instancias que hay,
pero a veces es más de lo que se merece el trabajo, y me sigue resultando super
comodo hacer clic sobre un mc y a traves de su nombre, poder acceder a sus
metodos.
Se me ha ocurrido hacer un apaño, pero no se si es muy chapu o si hay alguna
otra manera tan sencilla de hacerlo.
Cuando creo la instancia de Circulo, guardo en el mc del escenario una
referencia (_instancia) de la instancia de la clase, de tal manera que ahora
puedo hacer
var c1:Circulo = new Circulo(circulo1);
circulo1._instancia.mover();
Ahi va la clase:
class Circulo {
private var _instancia_mc:MovieClip;
public function Circulo(ref:MovieClip) {
_instancia_mc = ref;
_instancia_mc._instancia = this;
}
public function mover():Void {
_instancia_mc.......
}
}
En mi peli, con un mc llamado "circulo1"
var c1:Circulo = new Circulo(circulo1);
circulo1._instancia.mover();
Un saludo.
-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------