Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.11.2009, 20:31
ltise вне форума Посмотреть профиль Отправить личное сообщение для ltise Найти все сообщения от ltise
  № 1  
Ответить с цитированием
ltise

Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
По умолчанию как лучше поментять дизайн NumericStepper

Привет! столкнулся с дилеммой, необходимо использовать контрол NumericStepper,
но для моего приложения он очень громоздкий.. пробовал менять стили но как-то не очень получилось:

сейчас выглядит как


должно приблизительно типа


можно как-то изменить вид NumericStepper или проще свой контрол сваять ?

Спасибо

Старый 03.11.2009, 22:41
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
А в чем собственно проблема поменять скин?

Старый 04.11.2009, 12:04
ltise вне форума Посмотреть профиль Отправить личное сообщение для ltise Найти все сообщения от ltise
  № 3  
Ответить с цитированием
ltise

Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
Да, спасибо, протупил - поменял скин, все получилось..
но возникла другая проблема, при изменении stepSize, например = 1, значения начинают округляться до целого....например 2.9 становится = 3.
можно как-то исправить, чтобы было 2.9, 3.9, 4.9 и т.д. ?

Старый 04.11.2009, 12:41
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 4  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Возможно написание своего компонента наследника NumericStepper
с переопределением одного метода
Код AS3:
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
		}
	}
 
}

Старый 04.11.2009, 23:22
ltise вне форума Посмотреть профиль Отправить личное сообщение для ltise Найти все сообщения от ltise
  № 5  
Ответить с цитированием
ltise

Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
getValidValue не нашел, есть метод, но он private
Код AS3:
 
          private function checkValidValue(value:Number):Number

Старый 05.11.2009, 01:16
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 6  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Цитата:
Сообщение от ltise Посмотреть сообщение
getValidValue не нашел, есть метод, но он private
Я использую компоненты Flash CS3, Flash CS4. Видимо, Вы - другие...
Приложу рабочий пример
Вложения
Тип файла: zip MyNumericStepper.zip (19.0 Кб, 46 просмотров)


Последний раз редактировалось bicubic_bublic; 05.11.2009 в 01:25.
Старый 06.11.2009, 17:09
ltise вне форума Посмотреть профиль Отправить личное сообщение для ltise Найти все сообщения от ltise
  № 7  
Ответить с цитированием
ltise

Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
flex sdk 3.4..
придется видимо комнонент целиком перепахивать...

Старый 06.11.2009, 18:40
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 8  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Цитата:
Сообщение от ltise Посмотреть сообщение
flex sdk 3.4..
придется видимо комнонент целиком перепахивать...
попробуйте, думаю там выйдет не сильно сложнее

Старый 06.11.2009, 23:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от ltise Посмотреть сообщение
flex sdk 3.4..
В следующий раз задавайте вопросы в соответствующем разделе.

Старый 09.11.2009, 02:09
ltise вне форума Посмотреть профиль Отправить личное сообщение для ltise Найти все сообщения от ltise
  № 10  
Ответить с цитированием
ltise

Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
Вот такая фиговина получилась, кривая, но работает...вытащил наследованные компоненты через getChildAt и подписался на их события...текущее значение храню в своем поле _value. при нажатии стрелок на клавиатуре на шифте - изменяет +/-10, на контроле +/-100, просто стрелок клавиатуры +/-1, кнопки на компоненте +/-заданный stepSize.. хотелось бы увидеть более правильное решение (sdk 3.4), потому как данное решение, очень плохое решение, но ничего кроме как сделать свой компонент в голову не приходит, но вроде как ваять свой компонент, при наличии базового - тоже не тема, да и времени нету..
(и почему разработчики все в private убрали ??? скорее всего я чего-то не догоняю...).


Код AS3:
<?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, время: 02:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:10.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.