Zamjena base klasa u Actionscript 3.0?

Ovako, htio bih zamijeniti jednu base Actionscript klasu vlastitom. Dakle ne “extendat” nego baš zamijeniti, tako da moja klasa zauzme mjesto originalne u inheritance tree-u. Pokušao sam nešto sa prototype ali ne ide tj, ne izbaci nikakve errore već uopće ne registrira promjenu.

Ima li tko kakvu ideju?

mislim da se kod flexa mogu mjenjati one koje su unutar frameworka ali kod Flasha neznam.

uglavnom nebi smio mjenjati klase, već ih nadograditi.
Pogledaj decorator design pattern, no neznam jel tu on može pomoći.
No uglavnom funkcionalnost klase bi trebao proširiti tako da u toj klasi koju želiš mjenjati napraviš getter i setter metodu koja će vraćati tvoju klasu.
Probaj i sa extend to nekako rješiti.
Mislim da mjenjanje klase nebi smjelo nikako doći u obzir ili biti tek posljednja opcija jer nikad neznaš koja funkcionalnost ovisi o toj klasi i kako će utjecati na cijelu aplikaciju.
Ako znaš i ako nema druge opcije tek onda.
Koju klasu i što želiš postići?

Misliš na monkey patching?

Eh, kad bi programiranje uvijek bilo tako lako…

Nisam previše gledao, ali koliko sam shvatio, decorator u suštini znači dodavanje property-a i metoda za što može poslužiti prototype (ili ne može - je li on legacy ili što?) ali to je samo dio problema.

[quote=""]
No uglavnom funkcionalnost klase bi trebao proširiti tako da u toj klasi koju želiš mjenjati napraviš getter i setter metodu koja će vraćati tvoju klasu.
Probaj i sa extend to nekako rješiti.[/quote]

Možeš malo pojasniti ovo? Otrpilike razumijem što želiš reći, ali kako to napraviti na recimo, Event klasi?

Riječ je o Event Handling. Htio bih da mogu specificirati dotatne argumente koji se šalju listener funkciji, dakle trebalo bi proširiti EventDispatcher sa nekakvom addAdvancedEventListener funkcijom koja može sadržavati argumente te promjeniti par metoda i dodati property Event klasi kako bi te argumente proslijedio listener funkciji.

Neznam o prototype.
Mislim da je obavezan da zadovolji ECMA standard i ima neku konkretnu primjenu ali ga nisam koristio.

Što se tiče tvojeg problema.
Problem se može rješiti sa extend
Ovo je moja primjena na jednoj komponenti.
Nisam već dugo radio s AS3 no ovako bi mogao u event ubaciti custom properti.

I sad bi ti negdje vjerovatno treba postaviti kod za slušanje eventa i onda dohvatiti object

e nije dobro, message ipak treba biti public jer nećeš moći njemu pristupiti.
Jel vidiš što se događa kad mjenjaš kod:)
Trebaš ubaciti getter i seter ili promjeiti message u public.
Kvalitetnije bi bilo koristiti getter i setter.

A što je sa svim podklasama od Event-a? One i dalje nasljeđuju od Event klase.

Koliko sam shvatio, ti si napravio samo još jednu podklasu Event klase? Što ako mi zatreba, npr, MouseEvent.CLICK ili KeyboardEvent.KEY_DOWN - zar bi svaku od tih klasa onda trebao extendati?

Evo dodaj donji kod gore i tvoja custom klasa ima pristup Event, Mouse i Keyboard Eventu.

var mouseEvent:MouseEvent;
var keyboardEvent:KeyboardEvent;
public function setMouseEvent()
{
mouseEvent = new MouseEvent()
}

public function setKeyboardEvent()
{
keyboardEvent = new KeyboardEvent()
}

Mislim da uz ovaj kod i ovaj gore ranije svi tvoji problemi bi trebali biti rješenji bez petljanja u kod od Flasha.

Nisam stigao dodati jer sam nešto gledao.

No tu se postavlja jedno ozbiljno pitanje dali se isplati extendati klasu i onda njihove subclase uvesti preko agregacije.
Možda bi bolje jednu ekstendati a drugu uvesti i time smanjiti broj klasa.
No ako se baci pogleda na konstruktor od Mouse Eventa i Key Eventa onda je očito da bi bilo bolje rješenje extendati Event a ostalo uvesti. Valjda:)


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja