Javascript class funkció lefuttatása egy másik classon?
Sziasztok,
Az lenne a problémám hogy egy játékot írok, és van benne többféle Ammo osztály. Szeretném ha a különböző ammo-knak különböző hatása legyen. (lassító, sebző, stb...)
Az ammo-nak írnék egy effect metódust ami igazából azt döntené el mi is lenne ennek a hatása (pl speed = speed/2, hp = hp - this.dmg)
Addig jutottam el hogy returnolok egy () => {} funkciót (a scopet így megőrzi így a this.dmg az ammó this.dmg-jére fog vonatkozni ellenben a function () {} anonymous funkció létrehozással)
Ellenben amit nem tudok hogy lehetne ezt a függvényt alkalmazni egy másik osztály példányán?
(feltehetjük hogy annak van speed adattagja)
Nem feltétlen tudtam jól elmagyarázni, de remélhetőleg valaki megérti és tud segíteni :D
Szerintem én értem mire gondolsz.
Írod ugye a játékost:
function Jatekos(){
// összes tulajdonság
this.speed = ...;
this.hp = ...
this.ammo; // ez lesz a jelenlegi ammo függvénye
...
this.setAmmo(specifikusAmmo){ // ha új ammo-t veszel föl
this.ammo = specifikusAmmo;
}
var self = this; // láthatósági macera
this.hasznalAmmo = function(){ // az aktuális ammo-t használod
this.ammo(self); // a specifikus ammo-d megkapja ezt a karaktert
};
}
és akkor az ammoidra példa:
speedUpAmmo = function(self){
self.speed *= 2;
}
maxHealthAmmo = function(self){
self.hp += 10;
}
// aztán létrehozod a játékost:
var j1 = new Jatekos();
...
// időközben felvesz új ammot:
j1.setAmmo(speedUpAmmo);
// használja:
j1.hasznalAmmo();
Szóval valahogy így. Eltárolod a játékoson belül, hogy milyen ammo kezelő legyen, és közvetve ezt hívod meg a hasznalAmmo által. Az eredeti függvény meg cserélgethető.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!