Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   HTML/DHTML/CSS/JS/VB (http://www.flasher.ru/forum/forumdisplay.php?f=66)
-   -   бешеная картинка (http://www.flasher.ru/forum/showthread.php?t=88495)

navidim 24.11.2006 16:15

бешеная картинка
 
ниже приведен скрипт, а проблема в нем вот какая:
рисунок сначала движется нормально, а потом начинает летать как бешеный (очень быстро) :eek:
почему это может происходить??? ведь я прибавляю все время по одному пикселю! Подскажите пожалуйста... :D

<script language="JavaScript">
function dem() {
document.all.risunok.style.posLeft+=1
setTimeout ('dem()', 100)
}
</script>
<body>
<img id="risunok" src="nevajno" style="position: absolute; z-index:0; left: -50px; top: 100px" onLoad="dem()">
</body>

KidsKilla 24.11.2006 16:32

Цитата:

Сообщение от navidim
ниже приведен скрипт, а проблема в нем вот какая:
рисунок сначала движется нормально, а потом начинает летать как бешеный (очень быстро) :eek:
почему это может происходить??? ведь я прибавляю все время по одному пикселю! Подскажите пожалуйста... :D

<script language="JavaScript">
function dem() {
document.all.risunok.style.posLeft+=1
setTimeout ('dem()', 100)
}
</script>
<body>
<img id="risunok" src="nevajno" style="position: absolute; z-index:0; left: -50px; top: 100px" onLoad="dem()">
</body>

1) забудь про document.all. он работает только в ие. есть правильный аналог: document.getElementById()

2)
Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>test</title>
</head><body><script type="text/javascript">
function dem(t) {
//        alert(t)
        t.style.left = (t.offsetLeft+1)+'px';
}
function startFunc(f,el,tmr){
//        alert([f,el.style,tmr]);
        f(el);
        return setInterval(function(){f(el)}, tmr)
}
</script>
<body>
<img id="risunok" src="http://194.67.27.119/images/default/default/ico_leader.gif" style="position:absolute;z-index:1;left:50px;top:100px;" onload="startFunc(dem,this,10);">
</body>
</html>


navidim 24.11.2006 17:06

не работает
 
KidsKilla к сожалению, эффект тот же, рисунок приобретает ускорение, сначала двигаясь медленно, а потом - очень быстро...

KidsKilla 24.11.2006 18:12

Цитата:

Сообщение от navidim
KidsKilla к сожалению, эффект тот же, рисунок приобретает ускорение, сначала двигаясь медленно, а потом - очень быстро...

????????
=)))))))

можт у тя комп дерертирует? =)))

работает всё. проверял и в ослике и в фф и в опере

navidim 24.11.2006 18:25

вот ****
 
не подскажешь: что можно сделать в данной ситуации???
просто такой эффект на нескольких компах.....
картинка ускоряется !!!

ПОМОГИТЕ КТО-НИБУДЬ!!! :wacko:

KidsKilla 24.11.2006 19:09

Цитата:

Сообщение от navidim
не подскажешь: что можно сделать в данной ситуации???
просто такой эффект на нескольких компах.....
картинка ускоряется !!!

ПОМОГИТЕ КТО-НИБУДЬ!!! :wacko:

ор тут не поможет. можно только плюсов нахватать.

если ты имеешь в виду тот факт что она "дёргается" то тут не сделаешь ничего. вообще. setInterval (setTimeout) работают не совсем равномерно. + всё зависит от загруженности компа.

navidim 24.11.2006 19:55

KidsKilla... если бы она дергалась, то я бы не кричал! она сначала двигается плавно (со скоростью + 1 px) а потом начинает двигаться быстрее (со скоростью 2 px 3 px 4 px и т.д.)
просто изучая оба скрипта я в упор не вижу почему это может происходить!
меня это очень мучает!

navidim 24.11.2006 20:11

Вложений: 2
KidsKilla
вот исходники, можете проверить, как у вас работает?
если подождать пока бабочка пролетит пару раз - её скорость значительно возрастает! :(
с вашим скриптом - то же самое ...

KidsKilla 24.11.2006 20:40

Цитата:

Сообщение от navidim
KidsKilla
вот исходники, можете проверить, как у вас работает?
если подождать пока бабочка пролетит пару раз - её скорость значительно возрастает! :(
с вашим скриптом - то же самое ...

1) ты упорно пытаешься заточить жс код только под ие. за это руки отрывать.

2) никаких изменений в скорости не заметил.

3) вот правильный код, работающий во всех браузерах (с учетом цикличности движения):

Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>test</title>
</head><body><script type="text/javascript">
function dem(t) {
//        alert(t)
        var w = document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;
        var h = document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight;
        t.style.left = (t.offsetLeft>w-t.offsetWidth) ? '0' : (t.offsetLeft+1)+'px';
}
function startFunc(f,el,tmr){
//        alert([f,el.style,tmr]);
        f(el);
        return setInterval(function(){f(el)}, tmr)
}
</script>
<body>
<img id="risunok" src="http://194.67.27.119/images/default/default/ico_leader.gif" style="position:absolute;z-index:1;left:50px;top:100px;" onload="startFunc(dem,this,10);">
</body>
</html>


navidim 24.11.2006 21:02

ладно, спасибо большое за помощь, но бабочка по-прежнему улетает весьма быстро...
ещё один вопрос и все: "пытаешься заточить жс код только под ие. за это руки отрывать"
в чем именно, и как этого избежать?


Часовой пояс GMT +4, время: 20:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.