Как рассчитать высоту и ширину изометрического прямоугольника / квадрата

Я пишу игру изометрической плитки. Каждая плитка в два раза шире своей высоты (w: h = 2: 1). Все тайлы на карте имеют одинаковый размер, а их ширина и высота известны (TileWidth и TileHeight).

Может быть любое количество столбцов (> 0) и строк (> 0).

Я борюсь придумать формулу для расчета ширины и высоты полностью нарисованной карты. Это должно быть расстояние от самого верха до самого низа и от крайнего левого угла до крайнего правого. if (elem ....

Возможный дубликат:
Удаление анонимного прослушивателя событий

У меня есть следующая кроссбраузерная функция для добавления прослушивателя событий:

_SU3.addEventListener = function(elem, eventName, fn) {
if(elem.addEventListener ) {
    elem.addEventListener(eventName, fn, false);
  } else if (elem.attachEvent) {
      elem.attachEvent('on'+eventName, fn);
  } 
};

Я добавляю слушателя следующим образом:

_SU3.addEventListener(_show, "click", function(event) { 
                             _SU3.getChildren(_show, uri, element); 
                    });

И все в порядке. Однако я хочу удалить слушателя после того, как он был вызван один раз. То есть что-то например:

_SU3.getChildren = function(_show, url, element) {

... blah... 

_SU3.removeEventListener(_show, 'click', ANON_FUNCTION);

};

Но, конечно, функция прослушивателя анонимна, поэтому нет имени функции для ссылки.

Как я могу удалить прослушиватель?

Спасибо

6
задан Community 23 May 2017 в 11:48
поделиться