Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Изменение позиции бэкграунда через массив (https://javascript.ru/forum/events/22052-izmenenie-pozicii-behkgraunda-cherez-massiv.html)

alcotrip 04.10.2011 16:29

Изменение позиции бэкграунда через массив
 
Всем привет! Я новичок, поэтому сильно не пинайте за тривиальные вопросы.

Суть проблемы такова. Я хочу реализовать анимацию слоя посредством перемещения через определенные промежутки времени бэкграунда, состоящего из спрайтов при наведении на него мышкой. Программа "максимум" - реализация той же анимации в обратном порядке при onmouseout. Анимация не должна быть плавной, то есть, спрайты должны переключаться покадрово. Что-то я намудрил, спрайты меняются неравномерно:
<html>
<head>
  <title></title>
</head>
<body>
<script type="text/javascript" charset="utf-8">

var i=0;

pos = new Array();

pos[0] = "url('_i/exp2.png') 0 0";
pos[1] = "url('_i/exp2.png') 64px 0";
pos[2] = "url('_i/exp2.png') 128px 0";
pos[3] = "url('_i/exp2.png') 192px 0";
pos[4] = "url('_i/exp2.png') 40px 0";
pos[5] = "url('_i/exp2.png') 50px 0";

function over() {
i++ ;
setTimeout("change_pos()", 500); // Тут задается в миллисекундах
document.getElementById("about").style.background = pos[i];
}

</script>


</body>
 <a id="about" onMouseOver="over()" style="width:64px; height:64px; display:block; background: #ccc">
</a>


Буду благодарен за помощь!

ksa 04.10.2011 16:49

Цитата:

Сообщение от alcotrip
Что-то я намудрил, спрайты меняются неравномерно:

Так они у тебя вообще не меняются в примере... :D

Как вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
var i=0;
pos = new Array();
pos[0] = "0 0";
pos[1] = "64px 0";
pos[2] = "128px 0";
pos[3] = "192px 0";
pos[4] = "40px 0";
pos[5] = "50px 0";

function over() {
	setTimeout(change_pos, 100)
}
function change_pos() {
	document.getElementById("about").style.background = 'url("http://javascript.ru/forum/images/smilies/smile.gif") no-repeat '+ pos[i]+' #ccc';
	i++ ;
	if (i==pos.length) return;
	setTimeout(change_pos, 100)
}
</script>
</head>
<body>
<a id="about" onMouseOver="over()" style="width:200px; height:200px; display:block; background: #ccc"></a>
</body>
</html>


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