Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Анимация javascript (https://javascript.ru/forum/jquery/9332-animaciya-javascript.html)

Uri 11.05.2010 15:50

Анимация javascript
 
подскажите пожалуйста в чем моя ошибка
//вычисление растояния
function getAbsolutePosition(el) {
	var r = { x: el.offsetLeft};
	if (el.offsetParent) {
		var tmp = getAbsolutePosition(el.offsetParent);
		r.x += tmp.x;
	}
	return r;
}
//смена png
function btn(id,mode) {document.images[id].src = 'imgdiyan/'+id+'_'+mode+'.png';}

var i=0;
function s1(){
//блоки по которым объект 'к' определяет сколько пикселей двигаться
var b1 = Math.round(getAbsolutePosition(document.getElementById('b1')).x);
var b3 = Math.round(getAbsolutePosition(document.getElementById('b3')).x);
var b5 = Math.round(getAbsolutePosition(document.getElementById('b5')).x);

i++;

//смена png
if (i>b1) {btn('b',3);}
if (i>b1+110) {btn('b',4);}
if (i>b1+160) {btn('glonass',1);}
if (i>b1+170) {btn('glonass',0);}
if (i>b1+180) {btn('glonass',1);}
if (i>b1+190) {btn('glonass',0);}

//начало движения авто до блока Б1 ... Б3
if (i>b1+200) {k.style.pixelLeft=Math.round((b1-290)+i);}

//остановка блока 'к' у блока Б3
if (i>b3+375) {k.style.pixelLeft=Math.round(b3+86);}

//движение контейнера в верх

if (i>b3+424) {b.style.pixelTop=Math.round(0-(i-(b3+425)));}

//движение блока 'б' до блока 'к'
if (i>b3+436) {
b.style.pixelLeft=Math.round(0+(i-(b3+359))); 
b.style.pixelTop=Math.round(-10); 
}

if (i>b3+456) {btn('b',0);} 

//движение от блока 'к'

if (i>b3+466) {b.style.pixelLeft=Math.round(30-(i-(b3+538)));}

//движение блока 'б' на прежнее место
if (i>b3+490) {
b.style.pixelTop=Math.round(0+(i-(b3+500))); 
b.style.pixelLeft=Math.round(76);
}

//контейнер блока 'б' на место
if (i>b3+500) {b.style.pixelTop=Math.round(0);}

//блок 'к' уехал

if (i>b3+530) {k.style.pixelLeft=Math.round((b3+86)+(i-(b3+529)));}

// наполнение контейнеров... смена png
if (i>b3+535) {btn('b',1);} 
if (i>b3+600) {btn('b',2);
if (i>b5+560) {btn('b',3);}

//возврат блока 'к' в начало...
if (i>b5+700) {i=b1;}



window.status="Отсчет:" + i;
setTimeout("s1()",1);
}

за ранее спасибо 'добрым попутчикам)'

Skipp 11.05.2010 15:53

где ошибку выдаёт то?
Или в чём проблема?

Uri 11.05.2010 15:56

браузер ругается. и в лисе не происходит движение

Skipp 11.05.2010 15:59

Так а на что ругается) в какой строке? кстати в лисе есть консоль ошибок. на всякий:)

Skipp 11.05.2010 16:00

document.images[id]
замени на document.getElementById("ID")

Skipp 11.05.2010 16:03

и что за style.pixelTop style.pixelLeft ?
И где у тебя определены объекты b и k ?

Uri 11.05.2010 16:05

первая ошибка это недопустимый знак = указывает на '<' в html. а вторая это предпологается наличие объекта. а с консолью пробовал... и че то ни как... я на лисе не давно. а разбераться пока времени нет((

Skipp 11.05.2010 16:08

в firefox инструменты>Консоль ошибок. Ещё советую, очень советую установить в лисе firebug.

Очисти консоль и обнови страницу и гляди что за ошибки.
А насчёт объектов это наверно к b и k относиться, откуда ты их вообще берёшь?

Uri 11.05.2010 16:15

в смысле от куда беру? не понял...

Skipp 11.05.2010 16:19

Ну вот строка b.style.pixelLeft=Math.round(0+(i-(b3+359)));
Что такое b ?


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