Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.03.2015, 10:49
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Выберает только последний объект.
В общем ссылка на песочницу.. (Ссылка)

Функция "draw", коллизия работает только на последний созданный элемент, хотя вроде бы цикл есть для них всех и должно всех проверять.

Подскажите что я не так делаю.
Ответить с цитированием
  #2 (permalink)  
Старый 25.03.2015, 11:52
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

if не создает отдельную область видимости
переменная i в разных циклах это одна и та же переменная.
Ответить с цитированием
  #3 (permalink)  
Старый 25.03.2015, 11:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от hfts_rider
Подскажите что я не так делаю.
нет документации, коментариев, описания, что и зачем творится в вашем коде.
Ответить с цитированием
  #4 (permalink)  
Старый 25.03.2015, 12:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

MallSerg,
хотелось бы понять и вас
Ответить с цитированием
  #5 (permalink)  
Старый 25.03.2015, 12:25
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Сообщение от MallSerg
if не создает отдельную область видимости
переменная i в разных циклах это одна и та же переменная.
Насчет цикла да.. Но Это просто его дублирование.. Лишняя работа, оптимизация и тд, можно исправить, это тут не при чем..

А вот про if не понял...
Ответить с цитированием
  #6 (permalink)  
Старый 25.03.2015, 12:28
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Сообщение от рони
хотелось бы понять и вас
Я сам себя не понимаю ).
просто невнимательно на код посмотрел проблема похоже не в этом
Ответить с цитированием
  #7 (permalink)  
Старый 25.03.2015, 12:35
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Вообще смысл только в этих строчках
// enemy
var enemys = [
				new Enemy(20, 20, 1, '#00f', [10, 10], [200, 20]),
				new Enemy(20, 20, 1, '#0f0', [20, 90], [300, 120]),
				new Enemy(20, 20, 1, '#acacac', [50, 170], [150,190]),
				new Enemy(20, 20, 1, '#5577cc', [30, 290], [30, 290]),
				new Enemy(100, 10, 1, '#444', [30, 410], [30, 410])
			 ]

// is_collis
var is_collis = function (a, b) {
	return !( a.pos[0] + a.width <= b.pos[0] || b.pos[0] + b.width <= a.pos[0] || a.pos[1] + a.height <= b.pos[1] || b.pos[1] + b.height <= a.pos[1] );
};

// Draw
var draw = function () {
	ctx.clearRect(0, 0, canv.width, canv.height);

        for(var i = 0; i < enemys.length; i += 1){

		if( !is_collis(player, enemys[i]) ){
			moveToDirect(player);
		}
        }
}


Есть объекты enemy и player, у них есть свойства, но в общем это не важно)
Смысл в том что при проверке "is_collis" оно обнаруживает только последнего enemy, хотя цикл перебора всех enemy добавил...
Ответить с цитированием
  #8 (permalink)  
Старый 25.03.2015, 12:36
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Хотя может и не в этом проблема.. так как когда player наступает на другие предметы он их проходит но замедляется...
Ответить с цитированием
  #9 (permalink)  
Старый 25.03.2015, 12:46
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Выходит так что первый объект player пробегает насквозь быстро, на второй медленнее, на следующий еще медленнее и так пока не дойдет до последнего, на нем вообще не проходит.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление класса только по щелчку на сам объект, но не когда кликаешь на следующий Mrjoey jQuery 8 26.09.2013 15:47
FF4 (и не только) не находит объект по имени. Деревня Firefox/Mozilla 3 10.09.2013 20:47
Создать объект в объекте Bryant-24 Общие вопросы Javascript 3 10.07.2013 16:06
Спойлер работает только на один объект на странице. Shanks Общие вопросы Javascript 4 10.05.2009 14:53
Получить объект содержащий caller no_alex Общие вопросы Javascript 14 20.03.2009 21:37