Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.09.2011, 16:35
Новичок на форуме
Отправить личное сообщение для nacl Посмотреть профиль Найти все сообщения от nacl
 
Регистрация: 24.09.2011
Сообщений: 1

Определение координат DOM Объектов.
Добрый день всем. Изучаю создание браузерных игр с помощю js, jquery, html5. Столкнулся с проблемой. При проверке положения элемента ball, на его ударение об элемент paddle, проверка как таковая не срабатывает. И элемент ball проходит сквозь paddle. Как я думаю проблема в определении правильных координат элеметов. Помогите понять в чем дело. Ниже исходный код файлов index.html и game.js
index.html
<DOCTYPE!>
<html>
	<head>
		<style>
			#game{
				position: absolute;
				overflow: hidden;
				background: #00d3fa;
				height: 300px;
				width: 300px;
			}
			#fly
			{
				background: #af3d00;
				position: absolute;
				width: 50px;
				height: 15px;
				left: 50;
				bottom: 25;
			}
			#ball{
				position: absolute;
				background: #36ff12;
				width: 15; 
				height: 15;
				top: 100;
				left: 140;
			}
		</style>
		<script src = "js/jquery-1.6.4.min.js"></script>
		<script src = "js/game.js"></script>
	</head>
	<body>
		<div id = "game">
			<div id = "land">
				<div id = "paddle"></div>
				<div id = "ball"></div>
			</div>
		</div>
	</body>
</html>


game.js
var KEYS = {
	UP: 38,
	LEFT: 37,
	RIGHT: 39
};

var game = {};
game.pressedKeys = [];
game.ball = 
{
	speed: 3,
	directionY: 1,
	x: 140,
	y: 100
};

$(function(){
	game.timer = setInterval(gameloop, 30);
	
	$(document).keydown(function(e){
		game.pressedKeys[e.which] = true;
	});
	
	$(document).keyup(function(e){
		game.pressedKeys[e.which] = false;
	});
	
	function gameloop()
	{
		MoveBall();
		Movepaddle();
	}
	
	function Movepaddle()
	{
		if(game.pressedKeys[KEYS.LEFT])
		{
			var left = parseInt($("#paddle").css("left"));
			$("#paddle").css("left", left - 5);
		}
		if(game.pressedKeys[KEYS.RIGHT])
		{
			var left = parseInt($("#paddle").css("left"));
			$("#paddle").css("left", left + 5);
		}
	}
	
	function MoveBall()
	{
		var ball = game.ball;
		var gameHeight = parseInt($("#game").height());
		var gameWidth = parseInt($("#game").width());
		
		//удар о верх
		if(ball.y + ball.speed * ball.directionY < 0)
		{
			ball.direction = 1;
		}
		
		
		//за полем или нет
		if(ball.y + ball.speed *ball.directionY > gameHeight)
		{
			ball.x = 140; ball.y = 100;
			$("#ball").css({
				"left": ball.x,
				"top": ball.y
			})
		}
		
		//границы объектов
		var paddleTop = parseInt($("#paddle").css("top"));
		var paddleLeft = parseInt($("#paddle").css("left"));
		var paddleRight = parseInt($("#paddle").css("right"));
		var ballLeft = parseInt($("#ball").css("left"));
		var ballRight = parseInt($("#ball").css("right"));
		
		//!!!В ЭТОМ МЕСТЕ НАЧИНАЕТСЯ ПРОВЕРКА ПОПАДАНИЯ МЯЧА НА РАКЕТКУ КОТОРАЯ НЕ СРАБАТЫВАЕТ!!!
		//проверка на попадание на paddle
		if (ballLeft > paddleLeft && ballRight < paddleRight)
		{
			if(ball.y + ball.speed * ball.DirectionY >= paddleTop)
			{
				ball.directionY = -1;
			}
		}
		
		//перемещение мяча
		ball.y += ball.speed * ball.directionY;
		
		$("#ball").css({
				"left": ball.x,
				"top": ball.y
			})
	}
});

Последний раз редактировалось nacl, 24.09.2011 в 20:59.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение DOM объекта leoHex Events/DOM/Window 9 01.09.2011 20:29
DOM, определение стиля элементов Maximor17 Общие вопросы Javascript 3 04.11.2010 16:24
Определение координат мыши! sat-lin Events/DOM/Window 2 18.12.2009 11:12
определение абсолютных координат uncher4 Элементы интерфейса 5 20.06.2009 20:27
Определение координат body. Kolyaj Events/DOM/Window 10 04.04.2009 16:20