ActionScript3 - 相对于另一个对象的addChild()

时间:2012-02-16 02:36:04

标签: actionscript-3 addchild

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

添加另一个较小的矩形
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);

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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