Если вы знаете Flex, вы, вероятно, знаете, что делает свойство "includeInLayout".Если нет, это свойство заставляет родительского элемента вашего компонента игнорировать границы (например, ширину и высоту) вашего компонента при отображении собственных границ.
Описание, приведенное ниже:
Указываетвключен ли этот компонент в макет родительского контейнера.Если true, объект включается в макет его родительского контейнера, а его размер и положение определяются его родительским контейнером в соответствии с его правилами макета.Если false, размер и положение объекта не зависят от макета его родительского контейнера.
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIComponent.html#includeInLayout
В 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>
Теперь, если я установлю 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.То, что я хочу, это поведение в чистом ActionScript.Например:
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
Существует ли какая-либо эквивалентная реализация в чистом ActionScript для воспроизведения этого поведения на "myAnotherBox"?
Я уже пробовал:
- Изменить преобразованиематрица;
- Изменить преобразование pixelBounds;
- Изменить scrollRect;
- Применить маски;
И безуспешно.
Приветствия...