Странное поведение анимации.
Здравствуйте! Я прочел статью http://beta.javascript.ru/tutorial/animation и попытался сделать маятник. получилось вот:
<!DOCTYPE HTML> <html> <body onload = "move(document.getElementById('a'))"> <script> function move(el) { var i = 0, fading = 180; el.style.left = 0; el.style.top = 0; function fc() { left = (Math.cos(i/180*Math.PI) * el.parentNode.clientWidth*fading/180); el.style.left = (Math.cos(i/180*Math.PI) * el.parentNode.clientWidth*fading/180) + "px"; el.style.top = ((left / 320) * 320) + "px"; i++; fading -= 0.125; if(fading <= 0) {clearInterval(b)} }; var b = setInterval(fc, 10); } </script> <div style = "height: 320px; width: 320px; position: absolute; left: 295px"> <div style="height: 20px; width: 20px; background-color: blue; position: absolute; left: 0px; top: 0px" id = "a" onclick = "move(this)"></div> </div> </body> </html> скажите пожалуйста, что я делаю не так? |
Цитата:
|
Я полагаю что у вас проблемы именно с математическими операциями.
У вас получилась какая-то парабола неправильная) Может быть код верный, а неточности проявляются от того, что при расчетах выводятся, числа с плавающей запятой. Точно не могу сказать. Я не знаю как сам маятник устроен. |
Цитата:
http://volgogradplanetarium.volgadmin.ru/starhall.aspx на фотке мало что видно... :( Цитата:
y=A*(x*x)+B*x+C где A, B и C константы из множества R... А никак не sin() и cos(). ;) |
На основе этого кода придумал игру: поймай квадратик
<!DOCTYPE HTML> <html> <body onload = "move(document.getElementById('a'))"> <script> var b; function move(el) { var i = 0, fading = 180; el.style.left = 0; el.style.top = 0; function fc() { el.style.left = (Math.cos(i/180*Math.PI) * el.parentNode.clientWidth*fading/180) + "px"; el.style.top = (Math.abs(Math.sin((i-fading/2)/180*Math.PI) * el.parentNode.clientHeight)) + "px"; i++; fading -= 0.125; if(fading <= 0) {clearInterval(b); alert("Вы проиграли!"); document.getElementById("a").onclick = function() {alert("Поздно!")}} }; b = setInterval(fc, 10); } </script> <div style = "height: 295px; width: 320px; position: absolute; left: 295px"> <div style="height: 40px; width: 40px; background-color: blue; position: absolute; left: 0px; top: 0px" id = "a" onclick = "alert('Вы выиграли!'); clearInterval(b); this.onclick = function() {}"></div> </div> </body> </html> |
Кстати, маятник движется по сектору окружности, а не по параболе
|
Цитата:
|
Часовой пояс GMT +3, время: 19:13. |