Javascript.RU

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

obj.style.top и obj currentStyle.top
Пишу змейку.
Все работает правильно, за исключением одной детали - когда змейка съедает точку, она останавливается, а новая сама точка не генерируется.
Сам, методом тыка, (и с помощью консоли) выяснил, что когда змейка съедает точку, новые координаты точке не присваиваются.
Вот код

point = document.getElementById('idp')
function randPoint () // функция перемещает точку в случайную позицию.
{
var rndtop = parseInt(Math.random() * parseInt(gamebox.currentStyle.height)-8) //y новой точки
var rndleft = parseInt(Math.random() * parseInt(gamebox.currentStyle.width)-8) //x новой точки
rndtop = parseInt(rndtop / 8) * 8 // Это нужно, что бы координата была 0, 8, 16 и т.д. (Размер точки и кубика змейки 8х8)
rndleft = parseInt(rndleft / 8) * 8 // Это нужно, что бы координата была 0, 8, 16 и т.д. (Размер точки и кубика змейки 8х8)
for (i = 0; i < snk.length; ++i) //Проверяет, что бы точка не оказалась на змейке
{
if (snk[i].currentStyle.top == rndtop && snk[i].currentStyle.left == rndleft)
{
randPoint()
return
}
}
var top = rndtop + 'px'
var left = rndleft + 'px'
point.style.top = top
point.style.left = left
alert("1)" + point.currentStyle.top + " 2)" + point.currentStyle.left + "\n3)" + top + " 4)" + left)
}

При первом вызове функции при загрузке документа все работает нормально, алерт показывает что point.currentStyle.top и top равны 344px, а point.currentStyle.left и left равны 600px, т.е. так и должно быть.
При втором вызове функции (когда змейка кушает) алерт показывает что top и left - 208px и 32px, а point.currentStyle.top(left) - пустые.
Для кубиков змейки используется аналагичный трюк перемещения посл. кубика на место перед первого, и змейка отлично бегает.
Скрипт расположен в концк документа, т.е. все обьекты и перемеееые созданы.
Почему point.style.top point.style.left во второй раз не хотят принимать значения?
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2012, 20:06
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Ничего не понятно. Вопрос -когда змея съедает точку она становится невидимой? Если да то чтоб она появилась -нужно сделать её видимой
Ответить с цитированием
  #3 (permalink)  
Старый 21.10.2012, 23:48
Новичок на форуме
Отправить личное сообщение для alex_past Посмотреть профиль Найти все сообщения от alex_past
 
Регистрация: 20.10.2012
Сообщений: 4

Непонятно то, почему один раз point.style.top и point.style.left принимают значения, и все работает, а второй раз нет. Ведь условия одинаковые, передаются им допустимые данные... Может я что-то упустил?
Ответить с цитированием
  #4 (permalink)  
Старый 22.10.2012, 01:06
Новичок на форуме
Отправить личное сообщение для alex_past Посмотреть профиль Найти все сообщения от alex_past
 
Регистрация: 20.10.2012
Сообщений: 4

По какой причине obj.currentStyle может возвращать пустую строку?

Последний раз редактировалось alex_past, 22.10.2012 в 02:19.
Ответить с цитированием
  #5 (permalink)  
Старый 22.10.2012, 05:22
Кандидат Javascript-наук
Отправить личное сообщение для Your Посмотреть профиль Найти все сообщения от Your
 
Регистрация: 03.10.2012
Сообщений: 147

Имеет ли значение где указывать стили?

getComputedStyle.
Ответить с цитированием
  #6 (permalink)  
Старый 24.10.2012, 22:16
Новичок на форуме
Отправить личное сообщение для alex_past Посмотреть профиль Найти все сообщения от alex_past
 
Регистрация: 20.10.2012
Сообщений: 4

Спасибо, будем пробовать =)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбираем AjaxOOP eai Общие вопросы Javascript 41 04.11.2010 23:37