2017-03-08 62 views
0

我生成一个4x4正方形网格,下面的代码。它们都在stage.update()的画布上绘制正确的位置,行和列。但是,所有十六个检查中的x,y坐标是0,0。为什么?每个形状都有它自己的x,y坐标系吗?如果是这样,如果我得到一个形状的句柄,我该如何确定它最初绘制在画布上的位置?EaselJS形状x,y属性混淆

EaselJS文档对此主题保持沉默;-)。也许你必须知道Flash。

var stage = new createjs.Stage("demoCanvas"); 
    for (i = 0; i < 4; i++) { 
     for (j = 0; j < 4; j++) { 
      var square = new createjs.Shape();            
      square.graphics.drawRect(i*100, j*100, 100, 100); 
      console.log("Created square + square.x + "," + square.y); 
      stage.addChild(square); 
     } 
    } 

回答

1

您正在绘制所需坐标的图形,而不是在0,0处绘制它们,并使用x/y坐标移动它们。如果您自己未设置x/y,则它将为0. EaselJS不会根据图形内容推断x/y或宽度/高度(more info)。

这里是一个更新的小提琴,其中图形的绘制都在[0,0],然后利用定位X/Y代替:http://jsfiddle.net/0o63ty96/

相关代码:

square.graphics.beginStroke("red").drawRect(0,0,100,100); 
square.x = i * 100; 
square.y = j * 100; 
+0

谢谢!在我输入这个问题后,我怀疑这可能是答案 - 我假设绘制矩形调用会以某种方式设置方形实例的x/y是错误的。它看起来像一个有点令人困惑的API - 完全面向对象的(即新的矩形(x,y,宽度,高度)) - 但现在我明白它在做什么应该没有问题。 –