2012-02-16 2 views
0

Я видел код, в котором объект может быть добавлен относительно другого, но я не могу заставить его работать. Я просто пытаюсь нарисовать прямоугольник, а затем добавить еще один небольшой прямоугольник относительно первогоActionScript3 - 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); 

Оба прямоугольники только в конечном итоге вынесенные по отношению к сцене. Что я здесь делаю неправильно?

+0

Можете ли вы сделать диаграмму того, чего вы пытаетесь достичь? Мне трудно понять, что вы имеете в виду. – Marty

+0

Меньший квадрат внутри большой площади. Я мог бы, конечно, использовать абсолютные координаты, но локальные координаты облегчили бы жизнь. Я знаю, что это возможно, но я не уверен, что я делаю неправильно. –

+0

Вы хотите просто добавить прямоугольник, скажем, 10 пикселей слева? В этом случае вам просто нужно использовать: 'rectangle.x = firstRectangle.x + 10;' – Marty

ответ

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); 
+0

AH! Моя ошибка заключалась в том, что drawRect (x, y) - это то же самое, что и rectangle.x и rectangle.y спрайта. Получил это сейчас, спасибо! –

0

Проблема не в том, что при определении координат DrawRect (или любой другой формы), независимо от того, где он появляется на экран, форма всегда ориентирована на 0, 0. Это сбивает с толку, и я не уверен, почему он настроен таким образом, но решение всегда должно рисовать ваши фигуры в 0, 0, а затем перемещать их, задавая x и y. Тогда ваши x и y вашего ребенка будут относиться к родительскому.

Смежные вопросы