Показать сообщение отдельно
  #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 во второй раз не хотят принимать значения?
Ответить с цитированием