Flex 4, установить переменную в компоненте обложки из компонента - PullRequest
0 голосов
/ 08 ноября 2011

Учитывая пользовательский компонент, основанный на 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 все еще немного мутная. Спасибо.

1 Ответ

0 голосов
/ 08 ноября 2011

Попробуйте:

<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>

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

...