将形状缓存复制为位图源图像

时间:2015-11-27 05:25:56

标签: javascript caching html5-canvas createjs easeljs

我有一个包含缓存图形指令的EaselJS Shape对象,这些指令非常昂贵。每个帧我使用myShape.updateCache("source-overlay");将更多图形绘制到缓存中,因此不需要在下一帧重绘它们。

但是我希望在1秒后删除最旧的缓存图形,所以我考虑创建一个buffer Bitmap对象,将缓存从myShape复制到buffer的{​​{1属性,清除image当前缓存并继续向其绘制新图形,然后在1秒后清除缓冲区。

我知道很难解释,但是要简化:

myShape

问题是var myShape = new createjs.Shape(); var buffer = new createjs.Bitmap(); myShape.cache(0, 0, innerWidth, innerHeight); stage.addChild(myShape, buffer); function tick () { myShape.graphics.s("#F00").lt(Math.random() * 100, Math.random() * 100); myShape.updateCache("source-overlay"); myShape.graphics.clear(); } setInterval(function(){ buffer.alpha = 1; buffer.image = myShape.getCacheDataURL(); myShape.updateCache(); createjs.Tween.get(buffer).to({alpha: 0}, 1000); },1000); 的缓存不会显示为myShape的源图像。为什么呢?

1 个答案:

答案 0 :(得分:1)

Grant Skinner快速解决缓存问题的方法:

var bmp = new createjs.Bitmap(shape.cacheCanvas)
bmp.cache(x,y,w,h);
var cache2 = bmp.cacheCanvas;

在此讨论:https://github.com/CreateJS/EaselJS/issues/701#issuecomment-160349081