Все приветы.
Для отрисовки картинок создаю теги img и храню все данные об элементе в одном массиве. Ускорит ли работу если хранить это в теге канваса, или можно как то по лучше сохранить картинку что бы потом ее можно было быстро использовать в канвасе.
для тех кому нужен код:
функция перевода объекта анимации с записыванием в массив
function createNewEventObject(nameObject, nameEvent, Event) {
var elem = arrayObject[nameObject][nameEvent];
//Запись параметров перемещения объекта
for (var o in Event) {
if (typeof Event[o] == 'object' && Event[o] != null) {
elem[o] = new Object();
//Если значение является объектом тогда проходимся циклом по нему
for (var a in Event[o]) {
if (typeof Event[o][a] == 'string' && Event[o][a].indexOf('src') != -1) {
var img = new Image(); // Замена на img так как canvas не работает с урами
img.src = Event[o][a];
elem[o][a] = img;
} else if (typeof Event[o][a] == 'object') {
//создаем дополнительное вложение
elem[o][a] = new Object();
for (var i in Event[o][a]) {
//Снова делаем проверку на то нужно ли создавать img
if (Event[o][a][i].indexOf('src') != -1) {
var img = new Image(); // Замена на img так как canvas не работает с урами
img.src = Event[o][a][i];
elem[o][a][i] = img;
} else {
elem[o][a][i] = Event[o][a][i];
}
}
} else {
elem[o][a] = Event[o][a];
}
}
} else {
elem[o] = Event[o];
}
}
}
ну а руссую на canvas вот так
ctxMan.drawImage(
directions, //Объект Image анимации
Math.round(elemEvent.fw * step), //Берем текущий кадр, ширина кадра * шаг
0, //Кадры идут один за другим, тут 0
elemEvent.w, //Вырез в ширину объекта
elemEvent.h, //И в высоту
elemPosition.x+shiftX, //Размещаем по горизонтали на холсте
elemPosition.y+shiftY, //И по вертикали
elemEvent.w, //Ширина как у кадра
elemEvent.h //Ну и высота
);