danik.js,
да было бы крутяк трансформ ротейт менять - было бы вообще плавно, хотя думаю 8 точек достаточно для поворота. Я matrix() нагуглил - но чувак как то там косинусами синусами все вычислял - мне пока это не дано. Он как бы показывал как работает на UI функция поворота блока мышкой. |
Цитата:
У меня не объект, а конструктор, создающий сколь угодно жуков. Но ты можешь создать одного жука, без конструктора:
var bug = {
step: 5,
element: document.querySelector('.juk'),
moveTo: function(direction) {
this.element.style.top += this.step;
}
};
|
danik.js,
Да, по поводу jQuery заметил что разлагает. Подумал что крутая фишка - для верстки почти все задачи решает. Вот и забил на JS. С PHP помню while for if и прочее - вот и подумал что этого достаточно. Но последнее время пришел к мысли что х. р..й я занимаюсь а не веб разработкой с этими хлипкими скриптиками и чужими решениями типа галереи или таймера. Вот и решил основательно подойти к этому вопросу. |
Bond, можешь при повороте по часовой стрелке минусовать 90deg, против часовой - плюсовать. Правда, если крутиться на месте число будет возрастать.
this.rotation = 0;
moveTo(dir) {
dir = {top: 0, left: 90, right: 270, bottom: 180}[dir];
var diff = dir - (this.rotation % 360);
if (diff > 180) {
diff -= 360;
this.rotation += diff;
}
rotation - угол поворота. Может быть больше 360. rotation % 360 - отбросили лишние обороты, получили 0 <= x <= 360 diff - разница в градусах на сколько нужно повернуться из текущего положения. Если больше 180, значит поворачиваться надо в противоположную сторону - минусуем оборот. |
Еще интересно - а что бы лабиринт еще создать, как решить такую задачу? В массивах хранить стопы куда нельзя заходить?
|
danik.js,
О, спасибо попробую. Есть фронт работ для экспериментов. |
Блин, быдляцкий код получился для вычисления угла поворота.
http://jsfiddle.net/danya_postfactum/3xysqas1/ |
Цитата:
|
рони, я не спорю насчет работы кода. У меня предъявы к его читаемости (названия переменных, если забыл).
|
danik.js,
Уже полностью разобрался в коде, также разобрался с конструкторами и прототипами, но вот смущает 3 строка в этом коде:
Bug.prototype.moveTo = function(direction) {
this.direction = direction;
var angle = {top: 0, left: 270, right: 90, bottom: 180}[direction];
var diff = angle - (this.rotation % 360);
//console.log(this.rotation, diff, (diff - 360));
if (diff > 180 )
diff = diff - 360;
else if (diff < -180 )
diff = diff + 360;
this.rotation += diff;
if (diff == 0) {
// продвигаемся
this.advance();
}
this.update();
};
Не могу понять что здесь происходит - вернее что происходит ясно если к примеру direction == 'left' то angle будет 270 и т.д, но вот не пойму что это за запись, вроде про объекты читал, и про массивы тоже, но это мне напоминает смесь бульдога с носорогом. Проясните пожалуйста куда копать, не обязательно в подробностях. Видимо я что то пропустил. |
| Часовой пояс GMT +3, время: 11:42. |