Движение по диагонали
Код выкладывать не стану. Вопрос теоретический большей частью (если понадобится - выложу). Необходимо движение элемента к определённому месту по горизонтали и по вертикали. Задача состоит в том, чтобы, если он достигает координат по вертикали, движение по вертикали останавливается, а по горизонтали продолжается до своих координат, ну и наоборот соответственно. Вопрос - нужно ли писать две разные функции для движение по каждой из оси или можно обойтись одной (через лог. операторы наверное..)?
|
не не не, без этого... :)
|
Да зачем две функции. итоговые размеры все равно проверять надо.
x=(x>max_x)?max_x:Math.floor(x); y=(y>max_y)?max_y:Math.floor(y); |
Ах, про ньюанс забыл. У меня стоит setInterval, который стопится, если достигаются координаты..
function frame() { top++; left++; document.getElementById("ger").style.top = top + "px"; document.getElementById("ger").style.left = left + "px"; if (top == rest) { // rest - конечная коорд. по верт., аналогично - resl clearInterval(timer); } } var timer = setInterval(frame, 10); И вот нужно, что-то с "if (top == rest)" сотворить... А зачем Math.floor? Это же для дробных, да? |
Maxmaxmахimus,
логические операторы...я что-то не так сказал..? |
<style type="text/css"> div { background: blue; position: absolute; width: 50px; height: 50px; } </style> <div id="div" /> <script type="text/javascript"> var i = 0; !function() { if(++i <= 100) { document.getElementById('div').style.cssText = 'top:' + i + 'px; left:' + i + 'px'; setTimeout(arguments.callee, 10); } }(); </script> |
monolithed,
У меня left и top разные координаты. Там не чёткая диагональ. По идеи, он должен сначала двигаться чётко по диагонали, а достигая одного из пределов топа или лефта, двигаться уже по одной из осей, стремясь к её пределу.. |
alexandr_v-vich,
Ну так в чем проблема? опредилите условия и обнуляйте счетчик i по достижению нужного условия чтобы продолжить движение |
А не затруднит вас привести похожий пример. Я новичок в этом деле и не программист уж ни разу. Меня и так ваш пример напугал, разобраться в нём ещё потребуется время. А последний комментарий я уже не воспринимаю....)
|
function frame() { top=(top>rest)?rest:(top+1); left=(left>resl)?resl:(left+1); document.getElementById("ger").style.top = top + "px"; document.getElementById("ger").style.left = left + "px"; if ( (top >= rest) && (left>=resl) ) { clearInterval(timer); } } var timer = setInterval(frame, 10); вроде того |
Часовой пояс GMT +3, время: 13:03. |