2017-03-08 8 views
0

私は以下のコードで四角形の4x4グリッドを生成します。それらはすべてstage.update()のキャンバス上で正しい位置、行、列に描画されます。しかし、検査中の16個すべてのx、y座標は0,0です。どうして?各形状にはそれ自身のx、y座標系がありますか?そうであれば、シェイプのハンドルを取得したら、もともとキャンバスに元々描画されていた場所を特定するにはどうすればよいですか?EaselJS shape x、yプロパティの混乱

イーゼルジャーナルの文書は、トピックについてはサイレントです;-)。多分あなたは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はグラフィックスコンテンツ(more info)に基づいてx/yまたは幅/高さを推論しません。 http://jsfiddle.net/0o63ty96/

関連するコード:

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

いただきありがとうございます。ここ

は、グラフィックスは、すべての[0,0]で描画させ、x/yの代わりを使用して配置されている更新フィドルがあります!私はこの質問をタイプした後、私はこれが答えかもしれないと思っていました - 私の前提では、四角形のインスタンスのx/yを何らかの形で描画するという私の仮定は間違っていました。これはちょっと混乱しているAPIのように思えますが、オブジェクト指向の新しいオブジェクト(つまり、新しいRectangle(x、y、width、height))が問題になるはずはないとわかっています。 –