Показать сообщение отдельно
Старый 26.03.2009, 14:45
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 1  
Ответить с цитированием
: hr :

Регистрация: Nov 2003
Сообщений: 290
По умолчанию Slider's ticks не выровнены относительно slider's track

Друзья, существует такой баг http://bugs.adobe.com/jira/browse/SDK-15529 - в слайдере tick'и не правильно выравниваются по x-координате, что особенно хреново выглядит при кастомном скине track'а. Нашел внутри класса слайдера метод layoutTicks, где с помощью xOffset можно было бы поправить глюк, однако метод private.

Код:
+ private function layoutTicks():void
+    {
+        if (ticks)
+        {
+            var g:Graphics = ticks.graphics;
+            var tLength:Number = getStyle("tickLength");
+            var tOffset:Number = getStyle("tickOffset");
+            var tickWidth:Number = getStyle("tickThickness");
+            var xOffset:Number = tickWidth / 2;
+            var xPos:Number;
+            var tColor:Number = getStyle("tickColor");
+            
+            var usePositions:Boolean = _tickValues && _tickValues.length > 0 ? true : false;
+            var positionIndex:int = 0;
+            var val:Number = usePositions ? _tickValues[positionIndex++] : minimum;
+            
+            g.clear();
+            
+            if (_tickInterval > 0 || usePositions)
+            {
+                g.lineStyle(tickWidth,tColor,100);
+
+                do
+                {
+                    xPos = Math.round(getXFromValue(val) - xOffset);
+                    g.moveTo(xPos, tLength);
+                    g.lineTo(xPos, 0);
+                    val = usePositions ? (positionIndex < _tickValues.length ? _tickValues[positionIndex++] : NaN) : _tickInterval + val;
+                } while (val < maximum || (usePositions && positionIndex < _tickValues.length))
+
+                // draw the last tick
+                if (!usePositions || val == maximum)
+                {
+                    xPos = track.x + track.width - 1 - xOffset;
+                    g.moveTo(xPos, tLength);
+                    g.lineTo(xPos, 0);
+                }
+
+                ticks.y = Math.round(track.y + tOffset - tLength);
+            }
+        }
+    }
Посоветуйте плз, что можно сделать в данной ситуации.