【发布时间】:2019-06-17 10:54:48
【问题描述】:
尝试为 HTML5 游戏制作简单的动画引擎。我在顶部有一个时间线,由帧预览和一个带有火柴人的线框编辑器组成,用于在更大的底部画布上进行测试。
当我切换帧时,我使用 drawImage() 将底部画布复制到顶部的小帧预览中。
有没有办法将底部画布的当前状态保存在一个数组中(每个项目对应于每个帧),以便我可以使用 drawImage() 将它们放置为洋葱皮?
如果您想直观地查看项目,请查看以下项目: https://jsfiddle.net/incon/owrj7e5z/
(如果你看一下这个项目,它还没有真正工作,这是一项正在进行中的大工作,而且非常有问题)
这是我正在尝试的,它适用于预览,但不会在底部画布上重绘为洋葱皮。
var framePreviews = [undefined,undefined,undefined....];
var c = document.getElementById('bottomCanvas');
var tContext = document.getElementById('timelineCanvas').getContext('2d');
framePreviews[simulation.currentFrame] = c; // save canvas in an array
tContext.drawImage(framePreviews[simulation.currentFrame], simulation.currentFrame*60, 0, 60, 60/c.width*c.height); // draw the canvas 60px wide in the timeline
【问题讨论】:
-
小建议您可以尝试使用stackblitz.com 来管理和共享您的项目
-
检查代码后,您可以为框架创建图像并使用此处描述的技术将其保存在画布之外 stackoverflow.com/questions/45234492/…
标签: javascript html canvas