Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проблема с движением (https://javascript.ru/forum/events/25811-problema-s-dvizheniem.html)

inozem 16.02.2012 07:42

Проблема с движением
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 
<head>
  <title>Движениe</title>


</head>
<body>  

<script language="JavaScript" type="text/javascript">

var x = 150; 
var y = 180; 
var step = 5;

document.body.onkeypress = function move(){

    if(event.keyCode==39){x += step;}

Kamatoznik.top = y;
Kamatoznik.left = x;
setTimeout("move()", 50);}
</script>

<div id="Kamatoznik" style="position:absolute">

<img src="front.png" name="front" alt="Kamatoznik">

</div>

</body>
</html>

Подскажите пожалуйста где ошибка. Объект отказывается двигаться при нажатии стрелки в право.

d-kaktus 16.02.2012 14:04

Цитата:

Сообщение от inozem
setTimeout("move()", 50);

Попробуй так
setTimeout("move", 50);

или так
setTimeout(function(){move();}, 50);


Кстати, я использую функцию определения нажатия клавиши в кроссбраузерном варианте
document.onkeyup=function(event){
	var e=event||window.event;
	var k=e.keyCode||e.which;
	alert(k); // тут выдаст код клавиши. Работает везде (в ИЕ не проверял)
}

dmitriymar 16.02.2012 14:15

Цитата:

Сообщение от inozem
Kamatoznik.top = y;
Kamatoznik.left = x;

читай как обращаться к элементу по id,единицы измерения в CSS и как сказано выше вызов функции по таймеру.итого 3 ошибки.
а вообще алгоритм сам по себе бредовый

рони 16.02.2012 14:17

inozem,
Поиск элементов в DOM
События клавиатуры
JS-Анимация
или вариант ниже ...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title>Движениe</title>
</head>
<body>
<script type="text/javascript">
var x=150,y=180,step=5;
document.body.onkeydown = document.body.onkeypress = function (a) {
    a = a ? a : window.event;
    39 == (a.charCode || a.keyCode) && (x += step);
    a = document.getElementById("Kamatoznik");
    a.style.top = y + "px";
    a.style.left = x + "px"
};
</script>
<div id="Kamatoznik" style="position:absolute">
<img src="http://javascript.ru/forum/images/smilies/dance3.gif" name="front" alt="Kamatoznik">
</div>
</body>
</html>

рони 16.02.2012 14:21

inozem,
P.S. таймер здесь как ... короче ненужен

inozem 16.02.2012 22:44

Ребят огромное вам спасибо, очень помогли)
Я просто на самообучении, какие книги нашел, из тех и черпал...


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