Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.08.2015, 21:13
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

dmitry111, почему ты не так объект создаешь, а пишешь через new, в 7-й строке функция для чего тебе тогда?
var obj = Factory(type);

Последний раз редактировалось Rise, 03.08.2015 в 21:16.
Ответить с цитированием
  #12 (permalink)  
Старый 03.08.2015, 21:16
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от cyber
Зачем? Опиши полностью ситуацию я не до конца понимаю что ты хочешь и зачем?
Ок! Есть 2d мультиплеерная игра. В ней вся графика работает на конструкторах. Один конструктор создает пулю, другой игрока. Карты в игре тоже формируются из конструктора. Карт много, они разные и создаются из разных исходников и параметров

Так вот эти параметры нужно подгружать и инициализировать в конструкторе при каждой смене карты. Хранить их в самом конструкторе бессмысленно (карты разные), передавать их при создании объекта тоже не катит, потому как карта имеет динамические элементы, которые должны создаваться конструктором в любой момент игры, а так как создают их низкоуровневый код, то ему все равно что создать - что пулю, что ящик в игре.. он просто получает координаты и имя модели

Последний раз редактировалось dmitry111, 03.08.2015 в 21:21.
Ответить с цитированием
  #13 (permalink)  
Старый 03.08.2015, 21:23
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от Rise
dmitry111, почему ты не так объект создаешь, а пишешь через new, в 7-й строке функция для чего тебе тогда?
это фабрика конструкторов
Ответить с цитированием
  #14 (permalink)  
Старый 03.08.2015, 21:27
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

dmitry111, слушай ты объект от конструктора отличаешь почитай свои же комментарии в коде)
Ответить с цитированием
  #15 (permalink)  
Старый 03.08.2015, 21:37
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от dmitry111
Так вот эти параметры нужно подгружать и инициализировать в конструкторе при каждой смене карты. Хранить их в самом конструкторе бессмысленно (карты разные), передавать их при создании объекта тоже не катит, потому как карта имеет динамические элементы, которые должны создаваться конструктором в любой момент игры, а так как создают их низкоуровневый код, то ему все равно что создать - что пулю, что ящик в игре.. он просто получает координаты и имя модели
Мне кажется ты стреляешь себе в ногу с дробовика )
Я не вижу всей картины но сейчас это выглядит так что ты через пару месяцев будешь это все проклинать)
Мне кажется хорошей идеей будет сами игровые объекты разделить на классы, а карту держать в объекте.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #16 (permalink)  
Старый 03.08.2015, 21:50
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

dmitry111, покажи пример как ты добавляешь конструктор, т.е. в Factory.add(data) data что представляет из себя.
Ответить с цитированием
  #17 (permalink)  
Старый 03.08.2015, 22:58
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от cyber Посмотреть сообщение
Мне кажется ты стреляешь себе в ногу с дробовика )
Я не вижу всей картины но сейчас это выглядит так что ты через пару месяцев будешь это все проклинать)
Мне кажется хорошей идеей будет сами игровые объекты разделить на классы, а карту держать в объекте.
да нет, все нормально функционирует. Проблема возникла с внедрением динамических элементов карты.
Ответить с цитированием
  #18 (permalink)  
Старый 03.08.2015, 22:59
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 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.
Ответить с цитированием
  #19 (permalink)  
Старый 04.08.2015, 00:39
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от 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);
Ответить с цитированием
  #20 (permalink)  
Старый 04.08.2015, 07:41
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

51 строка должна быть

var soldier = Factory('Soldier', 'Vasya');
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение данными html страницу ИлонкаС Общие вопросы Javascript 2 31.07.2015 16:55
Встроить конструктор чехлов в CMS Drupal 6 weboreh Работа 0 05.11.2014 11:23
Практика: Функция конструктор и геттер. Magneto Общие вопросы Javascript 2 07.07.2013 14:01
Java applet и JavaScript - обмен данными Партизан Серверные языки и технологии 3 15.05.2012 16:08