0

我有这个:

var ctx = canvas.getContext( '2d' );

....
....

ctx.fillStyle = 'blue';

我真正需要改变的是俄罗斯方块游戏的形状。它们是这样写的:

var shapes = [
[ 1, 1, 1, 1 ],

[ 1, 1, 1, 0,
  1 ],

[ 1, 1, 1, 0,
  0, 0, 1 ],

[ 1, 1, 0, 0,
  1, 1 ],

[ 1, 1, 0, 0,
  0, 1, 1 ],

[ 0, 1, 1, 0,
  1, 1 ],

[ 0, 1, 0, 0,
  1, 1, 1 ]
]; 

我想更改第一个的颜色,即 [1,1,1,1] 或形状 [0],但我尝试过的都不起作用。ctx.fillStyle = '蓝色'; 有效,但它会改变所有对象的颜色。

现场版可以在这里查看:

http://harlem-shake-it.com/tetris/

4

1 回答 1

0

从这段代码中,我假设您只希望当前对象为蓝色?

for (var y = 0; y < 4; ++y) {
    for (var x = 0; x < 4; ++x) {
        if (current[y][x]) {
            ctx.fillStyle = '#0068ff';
            drawBlock(currentX + x,currentY + y);
        }
    }
}

如果是这种情况,您需要先使用 保存当前画布状态ctx.save();,使用 fillStyle,绘制块,然后使用ctx.restore();. 如果需要,这应该允许您用多种颜色填充块。或者,在这种情况下,将掉落的块渲染为黑色。

还应该声明一个 doctype : <!doctype html>。并且<center>标签已被弃用。您应该text-align: center;在 CSS 中继续使用,或者margin: 0 auto;取决于您的样式。

于 2013-04-24T02:39:31.880 回答