Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
ctx.save();
ctx.translate(x, y); // Точка, в которой должен был бы находиться верхний левый угол картинки
ctx.rotate(Math.atan2(wy - y, wx - x) + Math.PI / 2); // wy, wx точка, относительно которой поворачиваем картинку
ctx.drawImage(img, -width / 2, -height / 2); // Рисуем точку в положении минус половина ширины / высоты
ctx.restore();
Прокрутку можно эмулировать хоть на бесконечном холсте.
Не могу проверить, но полагаю что LibCanvas несколько оптимизирован для мобильных устройств.
ctx.clearRect(0, 0, canvas.width, canvas.height); // Очистить всё


Как я понимаю, это код в районе clearPrevious и сохранения формы при drawElements?
// функция слоя, которая вызывается каждый кадр
draw: function () {
var
ctx = this.dom.canvas.ctx,
resources = this.app.resources;
// добавляем в список отрисовки элементы, которые
// пересекаются с теми которые отправлены на отрисовку
if (this.settings.get('intersection') === 'auto') {
this.addIntersections();
}
// На случай, если активирован режим "перерисовывать всё"
// необходимо в первую очередь стереть удалённые элементы
if (this.shouldRedrawAll) {
atom.array.invoke(this.clear, 'clearPrevious', ctx, resources);
}
// Потом стираем старые позиции из списка отрисовки
// При режиме "перерисовывать всё" этот список указывает на все элементы
atom.array.invoke(this.redraw, 'clearPrevious', ctx, resources);
// После этого отрисовываем текущие элементы
this.drawElements(this.redraw, ctx, resources);
// Чистим списки отрисовки
if (this.shouldRedrawAll) {
this.clear.length = 0;
} else {
this.redraw.length = 0;
}
},
// перерисовка единственного элемента
drawElement: function (elem, ctx, resources) {
// если так получилось, что элемент уже не часть слоя - не перерисовываем
if (elem.layer == this) {
// redrawRequested необходимо в целях оптимизации
// снимаем флаг неоходимости отрисовка
elem.redrawRequested = false;
// отрисовываем элемент только если он видим
if (elem.isVisible()) {
// потом вызываем метод отрисовки элемента
elem.renderToWrapper( ctx, resources );
// сохраняем текущую обводщую фигуру
// она будет использоваться в clearPrevious
// и в addIntersections в следующем кадре
elem.saveCurrentBoundingShape();
}
}
},
addIntersections ;)но в моем случае не получается выбрать идеально совпадающий масштаб.
флеш версия жрет процессор меньше
Объясните? Они ведь одинакового размера.
Дорогой Санта, я просил только одну Солнечную систему...Шутки — шутками, но у ad hock решений, на мой взгляд, существует один общий большой недостаток — они призваны решить частную проблему частным способом. Возможно, они делают это оптимально для каждого конкретного случая. Но сам по себе такой подход мне кажется отнюдь не оптимальным.
Мне кажется, что наиболее полезным приложением усилий были бы разработка и поддержка свободного движка для высокопроизводительных Web приложений, построенного исключительно на Canvas 2D API
Ещё одна «Солнечная cистема» на HTML5 Canvas