在复杂的结构中使用缓存

时间:2014-06-05 12:08:23

标签: caching easeljs

我正在使用画架来构建某种结构。 在该结构内部,有许多容器和形状。

我遇到了一个问题,当用户用鼠标悬停它时,我需要更改某个元素的颜色。我设法做到了但是,在绘制颜色并返回其原始颜色之前会有相当长的延迟,因为舞台会自行重绘。

我看到我可以为此目的使用缓存,所以我按照这样的文档中的示例: myShape.cache(150,150,100,100,1);然而,没有发生,我没有看到形状。 我不得不说,形状位于一个容器内,该容器被添加到舞台上。

以下是相关代码:

在这里输入代码

var g = curShape.graphics.clone().clear();

                        g.beginFill("#2aa4eb");
                        g.drawRoundRect(0, 0, curShape.width, curShape.height, 1.5);
                        //g.drawRect(0, 0, curShape.width + 2, curShape.height + 2);
                        g.endFill();
                        g.endStroke();
                        var newShape= new createjs.Shape(g);
                        newShape.cache(150, 150, 100, 100, 2);

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

你在x:150和y:150缓存,但是你的形状是0,0。如果你的形状小于150x150,那么它将无法缓存。将您的缓存更改为0,0,它应该没问题。

此外,您没有向drawRoundRect调用提供第5个参数(角半径),这将使其失败。这是一个包含代码修改版本的快速示例。

http://jsfiddle.net/LNXVg/

var stage = new createjs.Stage("canvas");

var g = new createjs.Graphics();

g.beginFill("#2aa4eb");
g.drawRoundRect(0, 0, 300, 200, 5);
var newShape = new createjs.Shape(g);
//newShape.cache(150, 150, 100, 100, 2);
newShape.cache(0, 0, 100, 100, 2);

stage.addChild(newShape);
stage.update();