私はしばらくこれを行っていませんが、最初にコンポーネントの左上座標を使用してグローバル ポイントに変換したいと思うでしょう。
次に、ステージ上ではなく別のコンポーネント上に描画する場合は、グローバル ポイントをそのコンポーネントに相対的なローカル ポイントに変換し直す必要があります。
このようなもの:
var globalPoint:Point = component.localToGlobal(new Point(0, 0));
var newLocalPoint:Point = componentWhereYouWantToDrawIfNotStage.globalToLocal( globalPoint );
編集:
あなたが達成しようとしていることは正確にはわかりません。マウスポインターのどこかに描画したいと思いますが、わかりません。また、再帰コンポーネントの意味がわかりません。
以下は、内側コンポーネントの中心から外側コンポーネントの中心まで線を引くコードです。すべてのコンポーネントの上にキャンバスを使用して、コンポーネントが何であれ、線が見えるようにします。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="onCreationComplete();">
<fx:Script>
<![CDATA[
private function onCreationComplete():void
{
var globalInnerPoint:Point = innerComponent.localToGlobal( new Point( innerComponent.width / 2, innerComponent.height / 2 ) );
var globalOuterPoint:Point = outerCcomponent.localToGlobal( new Point( outerCcomponent.width / 2, outerCcomponent.height / 2 ) );
var canvasLayerInnerPoint:Point = canvasLayer.globalToLocal( globalInnerPoint );
var canvasLayerOuterPoint:Point = canvasLayer.globalToLocal( globalOuterPoint);
canvasLayer.graphics.lineStyle(4, 0xFF0000);
canvasLayer.graphics.moveTo( canvasLayerInnerPoint.x, canvasLayerInnerPoint.y );
canvasLayer.graphics.lineTo( canvasLayerOuterPoint.x, canvasLayerOuterPoint.y );
}
]]>
</fx:Script>
<mx:Box id="outerCcomponent" borderStyle="solid" width="100%" height="500">
<mx:Box id="innerComponent" width="80%" height="80%" borderStyle="solid"/>
</mx:Box>
<mx:Canvas id="canvasLayer" height="100%" width="100%" />
</s:Application>