Javascript.RU

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

Ну, т.е., как я понял, делаю так.

var i;

нажали_кнопку {
i++;
пускать_пулю(<div id = "pifpaf" + i ...);
}

Т.е. пускаю пулю со своим идентификатором, но, как в таймере проверять, попала ли пуля?
И ещё, как можно узнать, находится ли координаты pifpaf + i находятся в объекте?
Т.е. такой объект : var obj = { enemy1: "top-35;left-50", .... }; ?
Ответить с цитированием
  #12 (permalink)  
Старый 06.08.2012, 21:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

dixonich,
На каждую пулю ставим(по кнопке) свой таймер с своим идентификатором
После остановки пули убираем таймер - путем

clearInterval(Тут идентификатор нужного таймера)
Ответить с цитированием
  #13 (permalink)  
Старый 06.08.2012, 21:37
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от dixonich
И ещё, как можно узнать, находится ли координаты pifpaf + i находятся в объекте?
Т.е. такой объект : var obj = { enemy1: "top-35;left-50", .... }; ?
Как можно использовать координаты синтетического события. Вот идея от Раед -пост 13
Ответить с цитированием
  #14 (permalink)  
Старый 06.08.2012, 21:56
Интересующийся
Отправить личное сообщение для dixonich Посмотреть профиль Найти все сообщения от dixonich
 
Регистрация: 05.08.2012
Сообщений: 21

Не могу никак понять
Можете примерный псевдокод накидать, пожалуйста.
Ответить с цитированием
  #15 (permalink)  
Старый 06.08.2012, 22:27
Интересующийся
Отправить личное сообщение для dixonich Посмотреть профиль Найти все сообщения от dixonich
 
Регистрация: 05.08.2012
Сообщений: 21

Сообщение от Deff Посмотреть сообщение
dixonich,
На каждую пулю ставим(по кнопке) свой таймер с своим идентификатором
После остановки пули убираем таймер - путем

clearInterval(Тут идентификатор нужного таймера)
Пытаюсь сделать так :
setInterval(
	function() { 
		if($("#pifpaf" + i).css("top") >= "400px" && $("#pifpaf" + i).css("top") <= "405px") {$("#pifpaf" + i).remove(); }
	}, 1);


то есть каждую милисекунду проверяю, попал ли div с нужным идентификатором в область, но почему-то всё не успевает он поймать, если запустить много объектов. если по-тихоньку - всё ловит.
i - глобальная переменная, которая плюсуется каждый раз, как запустили пулю.
Ответить с цитированием
  #16 (permalink)  
Старый 06.08.2012, 22:52
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

dixonich,
1 - cтавь от 12 милисекунд и выше - чаще запускаться не будет
2. Нет идентификатора для каждого таймера - у Вас будет память ужирацо поскольку функция запускается даже после уничтожения объекта слежения!
Читайте по ссылке про ID таймера и пример я Вам привёл - пост 10 (к id таймера - добавлем тот же i что и к id шарика
тогда функция сможет сама себя делетить после окончания движения шара

Последний раз редактировалось Deff, 06.08.2012 в 22:55.
Ответить с цитированием
  #17 (permalink)  
Старый 07.08.2012, 00:25
Интересующийся
Отправить личное сообщение для dixonich Посмотреть профиль Найти все сообщения от dixonich
 
Регистрация: 05.08.2012
Сообщений: 21

И как мне пристроить i то туда тогда? ))
чтобы было var id + i =
Ответить с цитированием
  #18 (permalink)  
Старый 07.08.2012, 00:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

dixonich,
var IntervalId=[];

function SetTimer(i) { 
IntervalId[i]= setInterval(
	function() { 
		if($("#pifpaf" + i).css("top") >= "400px" && $("#pifpaf" + i).css("top") <= "405px")
		{
			$("#pifpaf" + i).remove(); clearInterval(IntervalId[i]);
		}
	}, 12);
}


По кнопке запускаем шарик и функцию SetTimer(i)
Ответить с цитированием
  #19 (permalink)  
Старый 07.08.2012, 15:33
Интересующийся
Отправить личное сообщение для dixonich Посмотреть профиль Найти все сообщения от dixonich
 
Регистрация: 05.08.2012
Сообщений: 21

Сообщение от Deff Посмотреть сообщение
dixonich,
var IntervalId=[];

function SetTimer(i) { 
IntervalId[i]= setInterval(
	function() { 
		if($("#pifpaf" + i).css("top") >= "400px" && $("#pifpaf" + i).css("top") <= "405px")
		{
			$("#pifpaf" + i).remove(); clearInterval(IntervalId[i]);
		}
	}, 12);
}


По кнопке запускаем шарик и функцию SetTimer(i)
Спасибо больше. И, последний вопрос. Вот функция проверки :
function checker(i) {
  var ids = new Array();
  ids[i]  = setInterval(
  	function check() { 
		var left = $("#pifpaf" + i).css("left");
		var top = $("#pifpaf" + i).css("top");
		//var met = parseInt(left) + parseInt(top);
		var met = parseInt(left) + "|" + parseInt(top);
		if(met in enemy) { $("#pifpaf" + i).remove(); $("#" + enemy[met]).remove(); clearInterval(ids[i]);}
  		
  	}, 12);
}


в у enemy такая структура : enemy = {"120|150" : "enemy1" ... }

т.е. координаты объекта и его айди.

проверяю координаты пули, и если координаты пули в объекте есть, то удаляю по айдишнику противника.

но, работает крайне странно, то удаляет, то не удаляет, то пропускает противника, то нет. не подскажите, в чём проблема?
Ответить с цитированием
  #20 (permalink)  
Старый 07.08.2012, 15:57
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

dixonich,
Не вижу проверки
Есть top; left (левый верхний край мишени) и размеры мишени width и height
проверяете
x > left ?; x < left+ width ?
y < top ?; x > top - height ?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
animate() тормозит theo_ jQuery 3 21.10.2011 12:48
Проблема с Confirm, jQuery animate в Chrome dimonrus66 jQuery 4 08.10.2011 16:54
проблема с div И animate g00000dman jQuery 2 24.03.2011 23:34
jQuery, функция animate(), рекурсия xintrea jQuery 12 03.01.2011 12:33
Граница использования animate() Petka jQuery 6 02.03.2010 15:51