Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   obj.style.top и obj currentStyle.top (https://javascript.ru/forum/events/32553-obj-style-top-i-obj-currentstyle-top.html)

alex_past 20.10.2012 18:27

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 во второй раз не хотят принимать значения?

dmitriymar 20.10.2012 20:06

Ничего не понятно. Вопрос -когда змея съедает точку она становится невидимой? Если да то чтоб она появилась -нужно сделать её видимой

alex_past 21.10.2012 23:48

Непонятно то, почему один раз point.style.top и point.style.left принимают значения, и все работает, а второй раз нет. Ведь условия одинаковые, передаются им допустимые данные... Может я что-то упустил?

alex_past 22.10.2012 01:06

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

Your 22.10.2012 05:22

http://javascript.ru/forum/events/32...vat-stili.html

getComputedStyle.

alex_past 24.10.2012 22:16

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


Часовой пояс GMT +3, время: 12:30.