0

我已经看到可以相对于另一个对象添加对象但我无法让它工作的代码。我只是想画一个矩形,然后添加另一个相对于第一个更小的矩形

public var rectangle:Sprite = new Sprite();
public var other:Sprite = new Sprite();

rectangle.graphics.beginFill(0xFF0000);
rectangle.graphics.drawRect(250, 10, 100, 100);
rectangle.graphics.endFill();

other.graphics.beginFill(0x00FF00);
other.graphics.drawRect(0, 0, 50, 50);
other.graphics.endFill();
rectangle.addChild(other);
this.addChild(rectangle);

两个矩形最终都相对于舞台进行渲染。我在这里做错了什么?

4

2 回答 2

1

您可以将精灵作为子精灵添加到精灵中。但是您的问题是您从未更改过两个精灵的坐标。因此,您可以看到没有视觉差异,因为舞台和父精灵具有相同的坐标系。

尝试修改父精灵的坐标,您将看到子精灵随之移动。

现在要在一个大矩形中获得一个小矩形,您可以这样做:

public var rectangle:Sprite = new Sprite();
public var other:Sprite = new Sprite();

rectangle.graphics.beginFill(0xFF0000);
rectangle.graphics.drawRect(0, 0, 100, 100);
rectangle.graphics.endFill();

other.graphics.beginFill(0x00FF00);
other.graphics.drawRect(0, 0, 50, 50);
other.graphics.endFill();

rectangle.x = 250;
rectangle.y = 10;
other.x = 25;
other.y = 25;

rectangle.addChild(other);
this.addChild(rectangle);
于 2012-02-16T03:20:17.150 回答
0

问题是,当为 drawRect (或任何其他形状)指定坐标时,无论它出现在屏幕上的哪个位置,该形状始终朝向 0, 0。这很令人困惑,我不确定为什么要这样设置,但解决方案始终是在 0、0 处绘制形状,然后通过指定 x 和 y 来移动它们。那么你孩子的 x 和 y 将相对于父母的。

于 2013-06-08T20:52:28.390 回答