![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
|
Привет! столкнулся с дилеммой, необходимо использовать контрол NumericStepper,
но для моего приложения он очень громоздкий.. пробовал менять стили но как-то не очень получилось: сейчас выглядит как ![]() должно приблизительно типа можно как-то изменить вид NumericStepper или проще свой контрол сваять ? Спасибо |
|
|||||
|
Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
|
Да, спасибо, протупил - поменял скин, все получилось..
но возникла другая проблема, при изменении stepSize, например = 1, значения начинают округляться до целого....например 2.9 становится = 3. можно как-то исправить, чтобы было 2.9, 3.9, 4.9 и т.д. ? |
|
|||||
|
Banned
[+4 25.09.09]
[+1 12.11.09] [+4 12.12.09] Регистрация: Sep 2009
Сообщений: 231
|
Возможно написание своего компонента наследника NumericStepper
с переопределением одного метода public class MyNumericStepper extends NumericStepper { protected var _roundSize:Number = 0.1; //как округлять protected var _myPrecision:Number = 1; //сколько знаков после запятой/точки выводить override protected function getValidValue(num:Number):Number { if (isNaN(num)) { return _value; } var closest:Number = Number((_roundSize * Math.round(num / _roundSize)).toFixed(_myPrecision)); if (closest > maximum) { return maximum; } else if (closest < minimum) { return minimum; } else { return closest } } } |
|
|||||
|
Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
|
getValidValue не нашел, есть метод, но он private
|
|
|||||
|
Banned
[+4 25.09.09]
[+1 12.11.09] [+4 12.12.09] Регистрация: Sep 2009
Сообщений: 231
|
Я использую компоненты Flash CS3, Flash CS4. Видимо, Вы - другие...
Приложу рабочий пример Последний раз редактировалось bicubic_bublic; 05.11.2009 в 01:25. |
|
|||||
|
Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
|
flex sdk 3.4..
придется видимо комнонент целиком перепахивать... |
|
|||||
|
Banned
[+4 25.09.09]
[+1 12.11.09] [+4 12.12.09] Регистрация: Sep 2009
Сообщений: 231
|
попробуйте, думаю там выйдет не сильно сложнее
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В следующий раз задавайте вопросы в соответствующем разделе.
|
|
|||||
|
Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
|
Вот такая фиговина получилась, кривая, но работает...вытащил наследованные компоненты через getChildAt и подписался на их события...текущее значение храню в своем поле _value. при нажатии стрелок на клавиатуре на шифте - изменяет +/-10, на контроле +/-100, просто стрелок клавиатуры +/-1, кнопки на компоненте +/-заданный stepSize.. хотелось бы увидеть более правильное решение (sdk 3.4), потому как данное решение, очень плохое решение, но ничего кроме как сделать свой компонент в голову не приходит, но вроде как ваять свой компонент, при наличии базового - тоже не тема, да и времени нету..
(и почему разработчики все в private убрали ??? скорее всего я чего-то не догоняю...). <?xml version="1.0" encoding="utf-8"?> <mx:NumericStepper xmlns:mx="http://www.adobe.com/2006/mxml" maximum="10000" stepSize="0.1" keyDown="_keyDown(event)" creationComplete="_creationComplete()"> <mx:Script> <![CDATA[ import mx.events.NumericStepperEvent; import mx.controls.Button; import mx.controls.TextInput; public override function set value(value:Number):void{ super.value = value; _value = super.value; } private var _value: Number = 0; private function _creationComplete(): void{ value = _value; (getChildAt(0) as TextInput).addEventListener(KeyboardEvent.KEY_UP, _valueCommit); (getChildAt(1) as Button).addEventListener(MouseEvent.MOUSE_UP, _buttonMouseUp); (getChildAt(2) as Button).addEventListener(MouseEvent.MOUSE_UP, _buttonMouseUp); } private function _valueCommit(event: Event): void{ _value = Number((getChildAt(0) as TextInput).text); } private function _buttonMouseUp(event: Event): void{ _value = value; } private function _keyDown(event: KeyboardEvent): void{ if (event.target != this) return; var v: Number = 1; if (event.shiftKey) v = 10; else if (event.ctrlKey) v = 100; switch (event.keyCode){ case Keyboard.DOWN: _value -= v; break; case Keyboard.UP: _value += v; break; } value = _value; var ev: NumericStepperEvent = new NumericStepperEvent(NumericStepperEvent.CHANGE); ev.value = _value; dispatchEvent(ev); } ]]> </mx:Script> </mx:NumericStepper> Последний раз редактировалось ltise; 09.11.2009 в 02:28. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|