Flex 4 Item Renderer цвет фона - состояния не работают - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть средство визуализации элементов со следующими состояниями:

<s:states>
    <s:State name="normal"/>
    <s:State name="hovered"/>
    <s:State name="selected"/>
</s:states>

Я пытаюсь изменить цвет фона элементов при наведении и выборе.Я добавил следующие строки в открывающий тег средства визуализации элементов:

contentBackgroundColor.hovered="0xff0018"
contentBackgroundColor.selected="0xffff11"

Ничего не происходит при наведении или выборе, кроме поведения средства визуализации элементов по умолчанию (серый цвет).Если, скажем, увеличить ширину изображения в пределах:

width.hovered="100"

Размер изображения будет изменен в соответствии с ожиданиями, как мне добиться нужного эффекта?

Редактировать:

</p> <pre><code><?xml version="1.0" encoding="utf-8"?> <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:objects="objects.*" creationComplete="itemrenderer1_creationCompleteHandler(event)" width="100%" height="100%" contentBackgroundColor.hover="0xff0018" focusColor="0xff00ff" contentBackgroundAlpha="0.8" dataChange="refreshView()"> <s:states> <s:State name="normal"/> <s:State name="hovered"/> <s:State name="selected"/> </s:states> <fx:Declarations> <objects:EmbededImages id="embImages"/> </fx:Declarations> <fx:Script> <![CDATA[ import events.MyEventDispatcher; import mx.events.FlexEvent; private function itemrenderer1_creationCompleteHandler(event:FlexEvent):void { //this.parentApplication.MyEventDispatcher.Dispatcher.addEventListener(CastUpdateEvent.UPDATED, refreshView); refreshView(); } public function refreshView():void { var profileImage:File = File.userDirectory.resolvePath("Movie Manager Settings\\profiles\\" + data.@id + ".jpg"); if(profileImage.exists) { personImage.source = profileImage.nativePath as String; } else { personImage.source = embImages.portrait; } } ]]> </fx:Script> <s:Image id="personImage" top="7" bottom="7" left="7" height="70" width="50"/> <s:RichText left="70" height="100%" width="100" text="{data.@name}" textAlign="left" verticalAlign="middle" paddingRight="5"/> <s:RichText right="10" height="100%" width="100" text="{data.@character}" textAlign="left" verticalAlign="middle"/> </s:ItemRenderer>

Ответы [ 3 ]

1 голос
/ 21 ноября 2011

Поместите это в CSS:

s|ItemRenderer:hovered {
 contentBackgroundColor: #ff0018;
}
1 голос
/ 23 мая 2012

Вы должны использовать в css:

.myItemRendererStyleName:selected #idOflabelInItemRenderer { contentBackgroundColor:#ff0000; }

и в формате mxml: <s:ItemRenderer styleName="myItemRendererStyleName" .... />

<s:Label id="idOflabelInItemRenderer" includeIn="normal,selected" />

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

это работает

<s:GridItemRenderer currentState="normal" >
<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        protected function state1_enterStateHandler(event:FlexEvent):void{
            bc.setStyle("backgroundColor",0xff0018);
        }

    ]]>
</fx:Script>
<s:states>
    <s:State name="normal"/>
    <s:State enterState="state1_enterStateHandler(event)" name="myState"/>
    <s:State name="selected"/>
</s:states>

<s:BorderContainer id="bc" left="0" right="0" height="{this.height}"/>
<s:Button click="this.currentState = 'prova'"/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...