03.08.2015, 21:13
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,672
|
|
dmitry111, почему ты не так объект создаешь, а пишешь через new, в 7-й строке функция для чего тебе тогда?
var obj = Factory(type);
Последний раз редактировалось Rise, 03.08.2015 в 21:16.
|
|
03.08.2015, 21:16
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
Сообщение от cyber
|
Зачем? Опиши полностью ситуацию я не до конца понимаю что ты хочешь и зачем?
|
Ок! Есть 2d мультиплеерная игра. В ней вся графика работает на конструкторах. Один конструктор создает пулю, другой игрока. Карты в игре тоже формируются из конструктора. Карт много, они разные и создаются из разных исходников и параметров
Так вот эти параметры нужно подгружать и инициализировать в конструкторе при каждой смене карты. Хранить их в самом конструкторе бессмысленно (карты разные), передавать их при создании объекта тоже не катит, потому как карта имеет динамические элементы, которые должны создаваться конструктором в любой момент игры, а так как создают их низкоуровневый код, то ему все равно что создать - что пулю, что ящик в игре.. он просто получает координаты и имя модели
Последний раз редактировалось dmitry111, 03.08.2015 в 21:21.
|
|
03.08.2015, 21:23
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
Сообщение от Rise
|
dmitry111, почему ты не так объект создаешь, а пишешь через new, в 7-й строке функция для чего тебе тогда?
|
это фабрика конструкторов
|
|
03.08.2015, 21:27
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,672
|
|
dmitry111, слушай ты объект от конструктора отличаешь почитай свои же комментарии в коде)
|
|
03.08.2015, 21:37
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от dmitry111
|
Так вот эти параметры нужно подгружать и инициализировать в конструкторе при каждой смене карты. Хранить их в самом конструкторе бессмысленно (карты разные), передавать их при создании объекта тоже не катит, потому как карта имеет динамические элементы, которые должны создаваться конструктором в любой момент игры, а так как создают их низкоуровневый код, то ему все равно что создать - что пулю, что ящик в игре.. он просто получает координаты и имя модели
|
Мне кажется ты стреляешь себе в ногу с дробовика )
Я не вижу всей картины но сейчас это выглядит так что ты через пару месяцев будешь это все проклинать)
Мне кажется хорошей идеей будет сами игровые объекты разделить на классы, а карту держать в объекте.
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
03.08.2015, 21:50
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,672
|
|
dmitry111, покажи пример как ты добавляешь конструктор, т.е. в Factory.add(data) data что представляет из себя.
|
|
03.08.2015, 22:58
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
Сообщение от cyber
|
Мне кажется ты стреляешь себе в ногу с дробовика )
Я не вижу всей картины но сейчас это выглядит так что ты через пару месяцев будешь это все проклинать)
Мне кажется хорошей идеей будет сами игровые объекты разделить на классы, а карту держать в объекте.
|
да нет, все нормально функционирует. Проблема возникла с внедрением динамических элементов карты.
|
|
03.08.2015, 22:59
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
Сообщение от Rise
|
dmitry111, покажи пример как ты добавляешь конструктор, т.е. в Factory.add(data) data что представляет из себя.
|
а в чем возникла проблема?
function Bullet() {}
function Soldier() {}
Factory.add({
'Bullet': Bullet,
'Soldier': Soldier
})
Последний раз редактировалось dmitry111, 03.08.2015 в 23:01.
|
|
04.08.2015, 00:39
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,672
|
|
Сообщение от dmitry111
|
а в чем возникла проблема?
|
(function () {
var root = this;
var Factory = {};
// Фабрика для строительства объектов игры
// создает объект игры указанного типа
// по заданным параметрам
//function Factory(type, params) {
// if (typeof Factory[type] !== 'function') {
// return;
// }
// return new Factory[type](params);
//}
// добавление конструкторов
Factory.add = function (data) {
var name;
for (name in data) {
if (data.hasOwnProperty(name)) {
Factory[name] = data[name];
}
}
};
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = Factory;
}
exports.Factory = Factory;
} else {
if (typeof define === 'function' && define.amd) {
define('Factory', [], function () {
return Factory;
});
} else {
root.Factory = Factory;
}
}
}.call(this));
function Soldier(name) {
this.name = name;
}
Factory.add({
'Soldier': Soldier
});
var soldier = new Factory['Soldier']('Vasya');
console.log(soldier);
|
|
04.08.2015, 07:41
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
51 строка должна быть
var soldier = Factory('Soldier', 'Vasya');
|
|
|
|