sergeik81
25.02.2010, 18:43
Столкнулся с такой проблемой. Создал список, у которого кастомный itemRenderer.
Все бы ничего, но в этом itemRenderer рисуется определенным цветом квадратик, обозначающий статус продукта. Так вот, при скроллинге почему-то далеко не все эти квадратики перерисовываются. То есть когда элемент списка становится видимым, то у некоторых этот квадратик рисуется, у других же нет, только если кликнешь по этому элементу. Все уже излазил, какие только валидейты не пробовал, на какие только события не навешивался - все без толку.
Код этого квадратика предельно простой, сам itemRenderer(код не привожу) - просто набор текстовых полей и этого квадратика
package com.cc.components
{
import flash.events.Event;
import mx.core.UIComponent;
public class LightboxStatusItem extends UIComponent
{
private var _color:uint=0xFF0000;
private var _itemAlpha:Number=1;
public function LightboxStatusItem()
{
super();
width=18;
height=18;
//addEventListener(Event.ENTER_FRAME, validate);
}
private function validate(event:Event):void{
invalidateDisplayList();
}
public function set color(value:uint):void{
if(value !=_color){
_color=value;
invalidateDisplayList();
}
}
public function get color():uint{
return _color;
}
public function set itemAlpha(value:Number):void{
if(value !=_itemAlpha){
_itemAlpha=value;
invalidateDisplayList();
}
}
public function get itemAlpha():Number{
return _itemAlpha;
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
drawRoundRect(0, 0, unscaledWidth, unscaledHeight, 2, color, itemAlpha);
}
}
}
Не хочет перерисовывать и все. При том, что явно вызывается updateDisplayList при скроллинге.
Я, конечно, могу навешать EnterFrame(сейчас закомментировал эту строчку) и все работает. Но вешать штук 30 ентерфреймов очень не хочется что-то.
Может кто-нибудь сталкивался с такой проблемой, когда отдельные элементы не прорисовываются при скроллинге?
Все бы ничего, но в этом itemRenderer рисуется определенным цветом квадратик, обозначающий статус продукта. Так вот, при скроллинге почему-то далеко не все эти квадратики перерисовываются. То есть когда элемент списка становится видимым, то у некоторых этот квадратик рисуется, у других же нет, только если кликнешь по этому элементу. Все уже излазил, какие только валидейты не пробовал, на какие только события не навешивался - все без толку.
Код этого квадратика предельно простой, сам itemRenderer(код не привожу) - просто набор текстовых полей и этого квадратика
package com.cc.components
{
import flash.events.Event;
import mx.core.UIComponent;
public class LightboxStatusItem extends UIComponent
{
private var _color:uint=0xFF0000;
private var _itemAlpha:Number=1;
public function LightboxStatusItem()
{
super();
width=18;
height=18;
//addEventListener(Event.ENTER_FRAME, validate);
}
private function validate(event:Event):void{
invalidateDisplayList();
}
public function set color(value:uint):void{
if(value !=_color){
_color=value;
invalidateDisplayList();
}
}
public function get color():uint{
return _color;
}
public function set itemAlpha(value:Number):void{
if(value !=_itemAlpha){
_itemAlpha=value;
invalidateDisplayList();
}
}
public function get itemAlpha():Number{
return _itemAlpha;
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
drawRoundRect(0, 0, unscaledWidth, unscaledHeight, 2, color, itemAlpha);
}
}
}
Не хочет перерисовывать и все. При том, что явно вызывается updateDisplayList при скроллинге.
Я, конечно, могу навешать EnterFrame(сейчас закомментировал эту строчку) и все работает. Но вешать штук 30 ентерфреймов очень не хочется что-то.
Может кто-нибудь сталкивался с такой проблемой, когда отдельные элементы не прорисовываются при скроллинге?