Flex を知っている場合は、「includeInLayout」プロパティが何をするかをおそらく知っているでしょう。そうでない場合、このプロパティは、コンポーネントの親が独自の境界をレンダリングする際にコンポーネントの境界 (幅や高さなど) を無視するようにします。
以下の参照の説明:
このコンポーネントを親コンテナーのレイアウトに含めるかどうかを指定します。true の場合、オブジェクトはその親コンテナーのレイアウトに含まれ、そのレイアウト ルールに従って親コンテナーによってサイズ変更および配置されます。false の場合、オブジェクトのサイズと位置は親コンテナーのレイアウトの影響を受けません。
たとえば、Flex では次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="application1_creationCompleteHandler(event)">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler( event:FlexEvent ):void
{
trace( container.width, container.height ); // output: 200 200
}
]]>
</mx:Script>
<mx:Canvas id="container">
<mx:Button label="Test"
width="100"
height="100" />
<mx:Button label="Test2"
width="200"
height="200" />
</mx:Canvas>
</mx:Application>
2 番目のボタンに includeInLayout="false" を設定すると、次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="application1_creationCompleteHandler(event)">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler( event:FlexEvent ):void
{
trace( container.width, container.height ); // output: 100 100
}
]]>
</mx:Script>
<mx:Canvas id="container">
<mx:Button label="Test"
width="100"
height="100" />
<mx:Button label="Test2"
width="200"
height="200"
includeInLayout="false" />
</mx:Canvas>
</mx:Application>
私は、このプロパティの実装に関連するすべてのフレームワーク アーキテクチャを知っており、このプロパティが Flex Framework のプロパティであることを知っています。私が欲しいのは、純粋なアクションスクリプトでのこの動作です。例えば:
import flash.display.Shape;
var myBox:Shape = new Shape();
myBox.graphics.beginFill(0xFF0000);
myBox.graphics.drawRect(0, 0, 100, 100);
myBox.graphics.endFill();
addChild(myBox);
trace(width, height); // output: 100 100
var myAnotherBox:Shape = new Shape();
myAnotherBox.graphics.beginFill(0xFF00FF, .5);
myAnotherBox.graphics.drawRect(0, 0, 200, 200);
myAnotherBox.graphics.endFill();
addChild(myAnotherBox);
trace(width, height); // output: 200 200
「myAnotherBox」でこの動作を再現するために、純粋なActionscriptに同等の実装がありますか?
私はすでに試しました:
- 変換行列を変更します。
- 変換 pixelBounds を変更します。
- scrollRect を変更します。
- マスクを適用します。
そして、成功しません。
乾杯...