3

我想加快我的游戏速度,而不是清除所有画布,我只清除部分(动画的地方)。这是我的代码的一部分:

this.draw = function(context) {
        context.clearRect(this.oldx, this.oldy, this.width, this.width);
        if (this.type == "square") {
            context.fillRect(this.x, this.y, this.width, this.height);
        } 
        this.oldx = this.x;
        this.oldy = this.y;
}

ClearRect 有效,但不能清除整个矩形。所有的正方形都应该是黑色的,但它们不是(看起来 fillRect 不起作用,但我认为它起作用)。在那里你可以看到发生了什么: ...我使用这个函数(clearRect)错了吗?为什么它不起作用?

4

1 回答 1

0
  1. clearRect 没有清除整个矩形可能是因为您的浏览器中的抗锯齿实现。我认为将 clearRect 区域扩大一个像素会对您有所帮助。还要尽量避免为画布设置宽度/高度,这会改变视图并且某些对象可能会显示模糊

  2. 关于您的代码,地面矩形永远不会是黑色的,因为在drawMap函数中您只为一个对象调用this.obiekt1.draw方法,因此您可以循环清除先前绘制的区域。尝试为每个地图块提取清除方法或创建单独的对象。

于 2013-03-12T12:26:28.347 回答