У меня есть более крупный проект, но я могу сузить проблему до этого примера:Координаты ребенка спрайта в AS3
public function Main()
{
var myContainer:Sprite = new Sprite;
myContainer.graphics.beginFill(0xFFFFFF);
myContainer.graphics.lineStyle(1);
myContainer.graphics.drawRect(10, 10, 300, 300);
myContainer.graphics.endFill();
addChild(myContainer);
trace('Container coords: ' + myContainer.x + ' ' + myContainer.y);
trace('Instance coords: ' + getChildAt(numChildren - 1).x + ' ' + getChildAt(numChildren - 1).y);
var spr:Sprite = new Sprite;
spr.graphics.beginFill(0xFF0000);
spr.graphics.lineStyle(1);
spr.graphics.drawCircle(30, 30, 10);
spr.graphics.endFill();
myContainer.addChild(spr);
trace('Child coords: ' + spr.x + ' ' + spr.y);
trace('Child instance coords: ' + myContainer.getChildAt(myContainer.numChildren - 1).x + ' ' + myContainer.getChildAt(myContainer.numChildren - 1).y);
}
Выход есть это:
Container coords: 0 0
Instance coords: 0 0
Child coords: 0 0
Child instance coords: 0 0
Может кто-нибудь объяснить, как чтобы получить фактические координаты дочернего спрайта внутри спрайта (локального или глобального, я знаю, что вы можете конвертировать между ними)?
Nitpick: ваш последний след имеет неправильный 'numChildren'. Если ваш 'this' имеет больше детей, чем просто' myContainer', вызов 'getChildAt()' генерирует исключение. Вместо этого вы должны обратиться к 'myContainer.numChildren'. – Vesper
Спасибо, исправлено. – Ashden