Войти
ПрограммированиеФорумОбщее

ООП, JavaScript и Phaser

#0
21:19, 20 апр. 2018

как сделать полноценное наследование в JavaScript для игр на Phaser?

обычно предлагают такую фигню:

MonsterBunny.prototype = Object.create(Phaser.Sprite.prototype);
MonsterBunny.prototype.constructor = MonsterBunny;

https://github.com/photonstorm/phaser-examples/blob/master/exampl… 20demo%201.js

но оно, я так понимаю, наследованию не подлежит.

как быть?


#1
22:18, 20 апр. 2018

Зачем в прототипно-ориентированном языке костылить ООП?

#2
22:24, 20 апр. 2018

как мне запрограммить такую иерархию?:

ObjectClass 
UnitClass = extends (ObjectClass)
TankClass = extends (UnitClass)
LazerTank = extends (TankClass)
RocketTank = extends (TankClass)
#3
23:55, 20 апр. 2018

в  местах где ООП не является оверкиллом, JavaScript не применим. Слишком косячный язык чтобы делать на нем что-то, имеющее хоть какую-то архитектуру.
Если дошло до наследования, придется менять язык, иначе не взлетит.

#4
1:50, 21 апр. 2018

Правильно так:

MonsterBunny.prototype = new Phaser.Sprite();
MonsterBunny.prototype.constructor = MonsterBunny;

prototype конструктора класса - это объект в котором ищется поле в том случае если это поле не найдено в самом экземпляре.
Если поле не найдено и в прототипе, поиск продолжается в прототипе супер класса. И так по цепочке.

В данном куске кода ты устанавлиаешь классу MonsterBunny в качестве прототипа один экземпляр класса Sprite. Что сязывает этоти два класса цепочкой.

#5
3:29, 21 апр. 2018

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes ?

#6
14:42, 21 апр. 2018

Использовать TypeScript, Haxe или другие нормальные языки для получения js

#7
18:53, 21 апр. 2018

Использовать ES2015 и более поздний.

#8
19:44, 21 апр. 2018

>Использовать TypeScript, Haxe или другие нормальные >языки для получения js

>Использовать ES2015 и более поздний.

А может стоит тупо немного подучить нативный js (по тому же learnjs), а не пользоваться абсолютно не нужным в большинстве случаев синтаксическим сахаром?

И нормально там всё наследуется на уровне прототипов...

#9
21:56, 21 апр. 2018

Тупо никогда не стоит.
И это не только сахар, но и нормальное программирование.
И серьезные компании давно используют инструменты, которые помогают нормально огранизовывать процессы.

#10
9:29, 22 апр. 2018

iKest
> может стоит тупо немного подучить нативный Js
И понять, что новые стандарты выпускаются не просто так, и, что сахарок вкуснее и красивее.

#11
11:14, 22 апр. 2018

В нулевом посте всё правильно написано. Цепочку наследования можно продолжать.

А Phaser не поддерживает ES6?

ПрограммированиеФорумОбщее

Тема в архиве.