PDA

Просмотр полной версии : Slider's ticks не выровнены относительно slider's track


: hr :
26.03.2009, 14:45
Друзья, существует такой баг 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);
+ }
+ }
+ }
Посоветуйте плз, что можно сделать в данной ситуации.

wvxvw
26.03.2009, 15:48
А что будет если просто скопировать к себе этот класс, в нем поправить и скомпилировать? (в смысле, а вдруг ваш исправленный класс компилятор первым увидит... не красиво конечно, но чет ничего другого не придумывается... ну или отнаследоваться от него, найти кто вызывает этот метод из того, что можно оверрайдить и там заменить на вызов кастом метода типа layoutTicks2 :)

: hr :
26.03.2009, 17:05
Спасибо, wvxvw! Сделал копию и скомпилировал - подхватило мой класс (хотя логика процесса мне не совсем ясна, почему мой класс первый...).