Я пишу приложение, в котором на странице могут быть сотни холстов. Вместо того, чтобы иметь накладные расходы на отдельный этап для каждого холста, я решил иметь редактор, который содержит этап. После завершения редактирования содержимое сцены должно быть скопировано на другой холст.
Stage предлагает toImage и toDataURL для получения содержимого, однако согласно этому тесту производительности оба эти метода будут очень медленными по сравнению с context.drawImage.
См.: http://jsperf.com/copying-a-canvas-element.
Поскольку я использую только один слой на сцене, а слой содержит холст, я подумал, что могу сделать это:
desticationCtx.drawImage(layer.getContext().canvas, 0,0);
к сожалению, это не дает никаких результатов (хотя оно работает)
Поскольку на сцене есть bufferCanvas, я также пробовал:
destinationCtx.drawImage(this.stage.bufferCanvas.element,0,0);
Опять никаких результатов, хотя я вижу содержимое на холсте сцены на странице.
Однако, если я покопаюсь на своей странице, чтобы добраться до фактического холста, созданного и используемого kineticjs:
destinationCtx.drawImage(document.getElementById('mydiv').children[0].children[0],0,0);
Я получаю результаты. Как правильно скопировать содержимое сцены кинетики на другой холст?