Значения X и Y компонента всегда относительно родительского компонента.directionsHelp.x
и directionsHelp.y
оба вернут позицию относительно VBox, содержащего их, которая, если вы явно не установите значения или не вставите другие компоненты вокруг него, будет по умолчанию 0.
О чем следует помнитьlocalToGlobal()
это то, что вы должны позвонить от ребенка.Если у вас есть Application
и вы просто вызываете localToGlobal( new Point(child.x, child.y) )
, он попытается вернуть заданную точку в приложении относительно стадии (потому что вы не указали, что такое «локальный»), что, следовательно, не приведет к преобразованию.и, следовательно, он останется равным (0, 0).
Если, однако, вы позвоните child.localToGlobal( new Point(child.x, child.y) )
, он вернет значение позиции ребенка относительно сцены, преобразовав данную точку, насколько быребенок смещен на сцену.
Вот быстрое приложение для демонстрации:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="#FFFFFF">
<mx:Script>
<![CDATA[
private function updateCoords():void
{
var point:Point = new Point(directionsHelp.x, directionsHelp.y);
point = directionsHelp.localToGlobal(point);
directionsHelp.text = "My stage coordinates are ("+point.x+", "+point.y+")";
}
]]>
</mx:Script>
<mx:VBox>
<mx:Box height="100" width="100" borderStyle="solid" borderColor="#000000"
horizontalAlign="center" verticalAlign="middle">
<mx:Label text="100 x 100" />
</mx:Box>
<mx:VBox>
<mx:Text id="directionsHelp" color="#4FA4CD" fontSize="8" fontWeight="bold"
text="Click the button to display my position on the stage." />
<mx:Button label="Get Position" click="updateCoords()" />
</mx:VBox>
</mx:VBox>
</mx:Application>