Flex 4, Установить переменную в обложке компонента из компонента

Учитывая настраиваемый компонент на основе SkinnableContainer, как я могу установить значения в скине во время выполнения? В частности, это компонент доски со значениями maxWidth и maxHeight, которые указывают наименьшую общую ширину / высоту всех досок в разговоре.

[Bindable]
public var maxWhiteBoardWidth:Number;
[Bindable]
public var maxWhiteBoardHeight:Number;

Эти значения используются для рисования ориентиров на поверхности всех больших белых досок в разговоре с помощью линий обводки на обложке:

<!-- smallest common denominator boundaries -->
<s:Line left="300" top="0" bottom="0">
    <s:stroke>
        <s:SolidColorStroke weight="1" color="0xFFFFFF" />
    </s:stroke>
</s:Line>

<s:Line top="300" left="0"  right="0">
    <s:stroke>
        <s:SolidColorStroke weight="1" color="0xFFFFFF" />
    </s:stroke>
</s:Line>

Значение 300 в атрибутах top и left s:Line не должно быть жестко закодировано в скине. Они должны отражать изменяющиеся значения maxWhiteBoardWidth / maxWhiteBoardHeight из компонента.

Я устанавливаю скин с помощью атрибута skinClass в MXML. Мне нужно динамически загружать скин? Если да, то когда / как в жизненном цикле?

Я недавно перешел из Flex 3, поэтому архитектура скинов Spark все еще немного туманна. Спасибо.


person Laramie    schedule 07.11.2011    source источник


Ответы (1)


Пытаться:

<s:Line left="{hostComponent.maxWhiteBoardWidth}" top="0" bottom="0">
  ...
</s:Line>
<s:Line top="{hostComponent.maxWhiteBoardHeight}" left="0"  right="0">
  ...
</s:Line>

и убедитесь, что у вас есть директива метаданных:

<fx:Metadata>
      <!-- Specify the component that uses this skin class. -->
      [HostComponent("my.component.MyComponent")]
</fx:Metadata>

в противном случае ваши настраиваемые свойства компонента не будут должным образом отображаться для кожи.

person merv    schedule 08.11.2011