0

私には仕事があります:

1 つのキャンバスに約 100 個のスプライトを配置する必要があります (その上にグリッドが用意されています)。それらを目に見えない(円)石としてボード上に配置し、マウスオーバーでのみ見えるようにする必要があります。

私が遭遇した問題は次のとおりです。これらのオブジェクトをグリッド上のノードに正確に配置できません。

例えば

石を次のように定義すると (前述のように、これは単なるスプライトです)、次のようになります。

var stone:StoneSprite = new StoneSprite();
    stone.x = this.x + 2*cellWidth;
    stone.graphics.beginFill( 0x000000 );
    stone.graphics.drawCircle(stone.x , this.y + cellWidth, cellWidth/3 );
    stone.graphics.endFill();
    rawChildren.addChild(stone);

彼らはノードに座っていません...画像を参照してください: http://img.skitch.com/20091014-kuhfyjeg1g5qmrbyxbcerp4aya.png

そして、私がこのようにすると:

var stone:StoneSprite = new StoneSprite();
    stone.graphics.beginFill( 0x000000 );
    stone.graphics.drawCircle(this.x + 2*cellWidth , this.y + cellWidth, cellWidth/3 );
    stone.graphics.endFill();
    rawChildren.addChild(stone);

石はグリッド ノードに正しく表示されます ...

したがって、これら2つのアプローチの違いは何だろうか。

また、石のクラスに正しい座標を渡す必要があると思います...石のオブジェクトのいくつかのプロパティを変更したい場合に備えて。たとえば、可視性、または半径。

  1. 座標をstone.x、stone.yとして定義する際の何が問題なのか、教えてください。
  2. 位置が正しくない問題を修正する方法。

問題についてのアイデアを本当に感謝します。私は長い間解決しようとしています:(

4

2 に答える 2

2

x と y が 30 で、cellWidth が 30 であると仮定します。

最初の例:

stone.x = 30 + 60; //90
drawCircle(90, 60, 10);

これは、円の周りに長方形を描くと、[170,50] になることを意味します。(x,y)。

2 番目の例:

stone.x = 0;
drawCircle(90, 60, 10)

これは、円を囲む長方形が [80,50] であることを意味します。


最初の例では、スプライトを position に移動していますx==90次に、スプ​​ライトの内側を中心とする円を描きます。に対して、あなたは にいます。ただし、円の x、y 座標は中心であるため、半径の 10 を引いて境界の x 位置を取得します。x==90 thisx==180

2 番目の例では、スプライトのデフォルトの位置はx==0相対的でthisあり、スプライト内の位置に円を描画していますx==90。(したがって、 から始まりますx==80)。

于 2009-10-14T09:11:01.243 に答える
0

何が問題を引き起こしているのかわかりません-コンテナによって引き起こされたパディングの可能性があります-テストなしでは言えません。しかし、スプライト(ボードなど)を追加しcanvas.rawChildrenてグリッドとストーンの親として使用すると、問題が解決すると思います。

于 2009-10-14T08:18:35.187 に答える