trikadin, нет нет.... не я... начиная с 8-го поста пошли какие-то Ваши личные с
melky темы про css и линух и про то, о чем melky говорит в каждой теме |
Цитата:
Но про линь-то вы начали спорить на тему убоства/неудобства его для обычного юзверя. |
Цитата:
вернёмся к анимации, совершаемой в бОльшей мере инструментами JavaScript. |
trikadin, melky спасибо за советы, стало работать намного быстрее...
|
у меня еще один вопросик.. а если я буду использовать не
setTimeout(function() { /* Тут изменение параметров */ if (/* условие срабатывания итерации */) setTimeout(arguments.callee, 0); }, 0); а следущее function RunAnimate(obj, R, dlt,start){ if(progress < 1) setTimeout(function(){RunAnimate(obj, R, dlt, start);}, 10); } второй вариант будет работать быстрее?? ведь по идее кучи [[скопов]] создаваться не должно.. так?? так как для RunAnimate всё передается через аргументы |
Используйте setInterval при создании анимации...
|
а потом
if(progress < 1) ClearInterval(handle); тоже как-то не очень хорошо, нужно будет хранить handle, тоесть будет сохраняться скоп вызвавшей функции... хотя это лучше чем куча скопов от сеттаймаут... спасибо, ща попробую |
Программная анимация на JS делается примерно так:
<div id="elem" style="width: 10px; height: 10px; background: red; position:absolute"></div> <script> div= document.getElementById("elem"); pos=0; interv= setInterval(function(){ if (++pos > 50){ clearInterval(interv); return; }; div.style.left= pos+"px"; }, 50); </script> |
еще вариант
<html> <head> <meta charset="utf-8"> <style type="text/css"> div { background-color:green; height:100px; width:100px; } </style> <script type="text/javascript"> var i = 0; function x() { if (i<400) { document.getElementsByTagName('div')[0].style.marginLeft=++i+'px'; setTimeout(x,10); } } </script> </head> <body> <div onclick="x();"></div> </body> </html> |
nerv_, я им и пользовался... просто хочу попробовать разные способы и найти для себя наиболее оптимальный..
Думаю, что сопсоб trikadin, будет оптимальней.. ибо [[скоп]] RunAnimatin создастся один раз и будет юзаться функцией setInterval'а.. В случае setTimeout(RunAnimatin,10); я так понимаю, что RunAnimatin будет запускаться раньше завершения, предыдущего запуска, и для нё будет создаваться новый [[скоп]].. и следовательно грузится будет больше.. это я так понимаю, могу быть не прав.... |
Часовой пояс GMT +3, время: 15:20. |