0

我有一个任务:

我需要在一张画布上放置大约 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:http: //img.skitch.com/20091014-f595tksjxramt98s7yfye591bh.png

所以我想知道这两种方法有什么区别。

另外,我认为我需要将正确的坐标传递给石头类......如果我想更改石头对象的某些属性。例如能见度或半径。

  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)。

第二个例子:

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

这意味着您的圆圈周围的矩形位于 [80,50];


在第一个示例中,您将精灵移动到 position x==90。然后画一个圆心在精灵x==90 内部。所以相对于this,你在x==180。但是因为圆的 x,y 坐标是中心,所以半径减去 10 以获得边界 x 位置。

在第二个示例中,精灵默认为x==0相对位置,this并且您在精灵内部的位置绘制圆圈x==90。(因此它从 开始x==80)。

于 2009-10-14T09:11:01.243 回答
0

我不确定是什么导致了这个问题——可能是容器引起的一些填充——没有测试就不能说。但我相信添加一个 Sprite(比如板)canvas.rawChildren并将其用作网格和石头的父级可以解决问题。

于 2009-10-14T08:18:35.187 回答