Как сделать перерисовку у flex spark компонента?

34 views
Skip to first unread message

Elast

unread,
Mar 21, 2012, 6:51:25 AM3/21/12
to Russian Adobe Flash Platform User Group
Добрый день.
Создал кастомный контрол и для него скин, не могу понять как
перерисовать компонент, когда присвоено свойство?


КОНТРОЛ:
<s:SkinnableComponent xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="70" height="70"
buttonMode="true">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here
-->
</fx:Declarations>
<fx:Script>
<![CDATA[
private var _coins:int = 1;

public function set coins(value:int):void { _coins = value; }
public function get coins():int{return _coins; }
]]>
</fx:Script>
</s:SkinnableComponent>




СКИН:
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<!-- host component -->
<fx:Metadata>
[HostComponent("view.components.UserAvatar")]
</fx:Metadata>
<s:Label id="coins"
color="0xFF0000"
text="{hostComponent.coins}"
fontSize="14"
fontWeight="bold"
x="3"
y="{hostComponent.height - coins.height}"/>
</s:Skin>

Yuriy Yarovoy

unread,
Mar 21, 2012, 7:06:20 AM3/21/12
to fp...@googlegroups.com
Именно для этого и существуют методы инвалидации/валидации компонентов:

invalidateProperties() -> commitProperties()
invalidateSize() -> measure()
invalidateDisplayList() -> updateDisplayList()

Вызовите invalidateDisplayList() при присваивании свойства, а в методе
updateDisplayList() перерисуйте все как вам нужно.

--
Best wishes,
Yuriy Yarovoy

Elast

unread,
Mar 21, 2012, 7:30:05 AM3/21/12
to Russian Adobe Flash Platform User Group
Спасибо! Получилось

Ilja Panin

unread,
Mar 21, 2012, 8:11:15 AM3/21/12
to fp...@googlegroups.com
Советую почитать про биндинг.

в вашем случае код мог быть таким:

<s:SkinnableComponent xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="70" height="70"
buttonMode="true">

<fx:Script>
<![CDATA[
[Bindable]
public var coins:int = 1;
]]>
</fx:Script>
</s:SkinnableComponent>

2012/3/21 Elast <ilyes.ga...@gmail.com>:
> Спасибо! Получилось
>
> --
> Вы получили это сообщение, поскольку подписаны на группу Russian Adobe Flash Platform User Group.
>
> Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу fp...@googlegroups.com.
> Чтобы отменить подписку на эту группу, отправьте сообщение по адресу fpug+uns...@googlegroups.com.
> О дополнительных функциях можно узнать в группе по адресу http://groups.google.com/group/fpug?hl=ru.
>

--
Ilja Panin
http://the33cows.com

Reply all
Reply to author
Forward
0 new messages