AS3: дочерний объект вне родителя - PullRequest
0 голосов
/ 14 апреля 2010

Я использую следующий код для помещения объекта в контейнер:

testParent = new MovieClip();
testParent.graphics..beginFill(0x0000FF);
testParent.graphics.drawRect(50, 50, 300, 300);
testParent.graphics.endFill();
addChild(testParent);

testChild = new MovieClip();
testChild.graphics..beginFill(0xFF0000);
testChild.graphics.drawRect(0, 0, 100, 100);
testChild.graphics.endFill();
testParent.addChild(testChild);

это дает объекту testParent поле 50 сверху и слева. Объект testChild должен иметь одинаковое поле относительно stage. Но не .. Дочерний объект находится в 0,0 относительно стадии. Что вызывает это? ...

Ответы [ 3 ]

2 голосов
/ 14 апреля 2010

Вы добавляете testChild к testParent, а не к объекту прямоугольника, который находится внутри testParent.

Следовательно, testChild будет иметь значение 0,0 относительно testParent (а не прямоугольника, то есть отдельного объекта)

Или, другими словами, рисование прямоугольника внутри testParent не дает ему «полей» как таковых.

Вы можете попробовать создать третий объект для представления прямоугольника, а затем добавить testChild в прямоугольник (и добавить прямоугольник в testParent)

Или просто установите x и y testChild, чтобы он находился в нужной вам позиции.

Примечание: у меня нет AS3 под рукой, чтобы проверить это, но я думаю, что это происходит

0 голосов
/ 14 апреля 2010

на самом деле, технически это должно быть

testParent = new MovieClip();
testParent.graphics.beginFill(0x0000FF);
testParent.graphics.drawRect(50, 50, 300, 300);
testParent.graphics.endFill();
addChild(testParent);

testChild = new MovieClip();
testChild.graphics.beginFill(0xFF0000);
testChild.graphics.drawRect(0, 0, 100, 100);
testChild.graphics.endFill();
testChild.x = 50;
testChild.y = 50;
testParent.addChild(testChild);
0 голосов
/ 14 апреля 2010

Спасибо, не знал этого. Теперь я понимаю.. Для будущей информации, это работает:

testParent = new MovieClip();
testParent.graphics.beginFill(0x0000FF);
testParent.graphics.drawRect(0, 0, 300, 300);
testParent.graphics.endFill();
testParent.x = 50;
testParent.y = 50;
addChild(testParent);

testChild = new MovieClip();
testChild.graphics.beginFill(0xFF0000);
testChild.graphics.drawRect(0, 0, 100, 100);
testChild.graphics.endFill();
testParent.addChild(testChild);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...