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, время: 09:28. |