我有一个任务:
我需要在一个画布上放置大约100个精灵(上面有准备好的网格)。我需要将它们作为隐形(圆形)宝石放在板上,并且仅在鼠标悬停时可见。
我遇到的问题是,我无法将这些对象准确地放入网格中的节点。
E.g。
如果我用这种方式定义石头(它只是一个精灵,如前所述):
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
所以我想知道这两种方法之间有什么区别。
另外,我想我需要将正确的坐标传递给石头类...如果我想改变石头物体的某些属性。例如。能见度或半径。
非常感谢有关这个问题的想法,我试图解决这么久:(
答案 0 :(得分: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];
在第一个示例中,您将精灵移动到位置x==90
。然后绘制一个 center 位于<{1}} 内的精灵的圆圈。因此,相对于x==90
,您处于this
。但是因为圆的x,y坐标是中心,所以半径减去10以获得边界x位置。
在第二个示例中,精灵默认为相对于x==180
定位x==0
,并且您在精灵位置this
内绘制圆圈。 (因此它始于x==90
)。
答案 1 :(得分:0)
我不确定是什么导致了这个问题 - 可能是容器引起的一些填充 - 没有测试也说不出来。但我相信向canvas.rawChildren
添加一个Sprite(比如棋盘)并将其用作网格和石头的父级将解决问题。