0

与上一个问题有关

我现在更新了jsfiddle以仅在初始加载期间添加网格。

与此相关的几个问题: 1)当我点击“显示网格”时,它没有出现。removeGrid() 但是,如果我从 initStage 中注释掉该行,则会出现网格。我错过了什么——因为我假设我在 showGrid 中调用的网格对象与 removeGrid 中的不同——尽管我只能看到它被创建一次。

2)我还添加了一个“清除舞台”按钮,当调用它时会清除舞台(工作),但我无法再次显示网格。我make_grid();在清除舞台后加入了 - 但它没有效果。我假设由于(1)中提出的错误?

3)如何从顶部和左侧开始网格 20px。本质上,我希望网格只出现在画布的中心 - 一直留下 20px 的边框。

非常感谢您的帮助!

4

1 回答 1

1

就您的 removeGrid() 错误而言,jsfiddle 中有一个简单的错误:

  1. $d("body").on('click','#removeGrid',function(){<-- 在两个事件处理程序中都是“#addGrid”

它还解决了问题 2. 更新了小提琴http://jsfiddle.net/aplus1/37Z4P/20/

对于你的问题 3:检查这个小提琴 - http://jsfiddle.net/aplus1/37Z4P/21/

这是更改的相关代码:

for (i = 0; i < (stage.getWidth()-40)/CELL_SIZE + 1; i++) {
    var I = i * CELL_SIZE + 20;
    var l = new Kinetic.Line({
        stroke: "black",
        points: [I, 20, I, stage.getHeight()-20]
    });
    grid.add(l);
}

for (j = 0; j < (stage.getHeight()-40)/CELL_SIZE + 1; j++) {
    var J = j * CELL_SIZE + 20;
    var l2 = new Kinetic.Line({
        stroke: "black",
        points: [20, J, stage.getWidth()-20, J]
    });
    grid.add(l2);
}

这里发生的情况如下:我已经减少了你的循环,使它从 20px 到 Width-20px,将你的端点在左侧/顶部偏移 20px,并从宽度/高度减少 40px 以获得另一个端点

如果您有任何问题,请告诉我。

于 2013-10-30T11:13:15.970 回答