flex: граница появляется при наведении мыши на сетку данных, содержащую контейнер с обложками - PullRequest
1 голос
/ 12 мая 2011

enter image description here У меня есть проект, в котором я отображаю содержимое из массива.Мне также нужно отобразить рейтинги, которые находятся в диапазоне от 1 до 5 звездочек

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

Мне сказали, что нужно перейти от Datagrid к List, чтобы решить эту проблему и повысить производительность.- Похоже, большая задача, которую я испортил.В качестве более простой альтернативы, я хотел бы либо а) заставить исчезнуть цвет контейнера с обложкой, поэтому я вижу один цвет в строке при наведении мыши б) отключить изменение цвета при наведении курсора для сеткистрок, поэтому эта проблема исключена

испорчена предыдущая запись - следовательно, проблема возобновляется ...

Спасибо

Сетка данных очень проста, как показано ниже

<mx:DataGrid id="experimentgrid" fontSize="{12}"  fontWeight="bold" color="#006837" styleName="dataGridStyle" rowHeight="{15}" borderVisible="false" showHeaders="false" x="{20}" y="{50}"  width="{900}" height="{350}"   dataProvider="{arr_expList}" itemClick="onItemExp(event);" creationComplete="setColWidths()" verticalScrollPolicy="auto" verticalScrollBarStyleName="scrollStyle" >
     <mx:columns>
<mx:DataGridColumn id="col11" dataField="no"  resizable="true" />
<mx:DataGridColumn id="col12" dataField="Name" resizable="true" />
<mx:DataGridColumn id="col13"  dataField="Rating" itemRenderer="itemRenderers.experimentGriditemRender" resizable="true"/>      
</mx:columns>

Код визуализации элемента выглядит следующим образом

    <?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                          xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 
focusEnabled="true">

    <fx:Script>
        <![CDATA[
            import assets.graphics.dotrating;

            import mx.controls.dataGridClasses.*;
            import mx.events.FlexEvent;

            import spark.core.SpriteVisualElement;
            private var mydot:SpriteVisualElement;

            override public function set data(value:Object):void
            {               
                if(value != null)
                {       
                    cont.removeAllElements();       
                    for(var i:int=0;i<value.Rating;i++)
                    {
                        mydot = new dotrating();
                    //600 is a stand-in for some calculations   
                        mydot.x= (600*0.02)+(i*600*0.02);
                        mydot.y= (600*0.012);
                        //mydot.x = (i*600*0.02);                       
                        mydot.height = 600*0.013;
                        mydot.width = 600*0.013;                        
                        cont.addElement(mydot);
                    }                   
                }
            }


        ]]>
    </fx:Script>
    <s:SkinnableContainer id = "cont" top="0" left="0" right="0" bottom="0" height="{600*0.02}">

    </s:SkinnableContainer>
</s:MXDataGridItemRenderer>![enter image description here][2]

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Да, я бы определенно использовал список с настраиваемым средством визуализации элементов вместо сетки данных. Datagrids тяжелы и имеют много дополнительных функций, которые вы даже не используете. Это также решит вашу проблему.

1 голос
/ 12 мая 2011

Я уверен, что вы хотите установить для свойства autoDrawBackground itemRenderer значение false. Это правда по умолчанию.

Помимо этого, вы можете попробовать поэкспериментировать со стилем DataGrid rollOverColor .

...