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

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

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

Регистрация: Apr 2013
Сообщений: 8
По умолчанию Как добавить иконку в ComboBox ?

Хочу сделать вот такую выпадающю менюшку с иконками


Сами иконки в выпадающем списке отображаются посредством реализации эземпляра класса, расширяющего ComboBox
Код AS3:
package
{
	// Компонент ComboBox (Список)
	import fl.controls.ComboBox;
	import fl.data.DataProvider;
	import flash.events.Event;
 
 
	public class ExComboBox extends ComboBox
	{
		// Статус слушателей событий
		private var eventListener:Boolean = false;
		// Номер текущего (выбранного) элемента списка
		private var current:String = new String();
		// Метод, выполняемый при наступлении события
		private var eventFunction:Function;
 
 
		public function ExComboBox()
		{
			super();
 
			//this.buttonMode = true;
			//this.mouseEnabled = true;
			//this.useHandCursor = true;
			//this.dropdown.useHandCursor = true;
			//this.dropdown.iconField
 
			this.prompt = 'Please select an option...';
			this.enabled = this.eventListener;
			this.labelField = 'label';
			this.dropdown.setStyle("textPadding", 5);
			this.dropdown.rowHeight = 28;
			this.height = 26;
 
		}
 
 
		// Устанавливает флаг доступности и слушатель событий ComboBox
		override public function set enabled(b:Boolean):void
		{
			super.enabled = b;
			if (this.eventFunction is Function)
			{
				this.EventListener = b;
			}
		}
 
		// Устанавливает метод, выполняемый при наступлении события f(s:String):void
		// Принимаемый параметр метода f(s) - номер текущего элемента
		public function set EventFunction(f:Function):void
		{
			this.eventFunction = f;
		}
 
		// Устанавливает имя атрибута изображения в выпадающем списке
		public function set NameIconField(s:String):void
		{
			if(s.length) this.dropdown.iconField = s;
			else this.dropdown.iconField = null;
		}
 
		// Устанавливает Список элементов в компоненте ComboBox
		public function set DataList(vo:Vector.<Object>):void
		{
			this.dataProvider = new DataProvider(this.Convert(vo));
		}
 
		// Возвращает Номер текущего (выбранного) элемента списка
		public function get Current():String
		{
			return this.current;
		}
 
		public function Destroy():void
		{
			if (this.eventListener) this.EventListener = false;
		}
 
		/////////////////////////////////////////////////////////
 
 
 
		private function Convert(vo:Vector.<Object>):Array
		{
			var arr:Array = new Array
			var i:int = vo.length;
			while (--i > -1)
			{
				arr.push(vo[i]);
			}
			return arr;
		}
 
		// Подключение или отключение слушателей событий
		private function set EventListener(flagEvent:Boolean):void
		{
			if(this.eventListener != flagEvent)
			{
				if(this.eventListener = flagEvent)
				{
					// Подключение слушателей событий
					this.AddEventListener();
				}
				else
				{
					// Отключение слушателей событий
					this.RemoveEventListener();
				}
			}
		}
 
		private function AddEventListener():void
		{
			this.addEventListener(Event.CHANGE, ChangeHandler);
		}
 
		private function RemoveEventListener():void
		{
			this.removeEventListener(Event.CHANGE, ChangeHandler);
		}
 
		private function ChangeHandler(e:Event):void
		{
			this.current = ComboBox(e.target).selectedItem.data;
			if (this.eventFunction is Function) this.eventFunction(this.current);
		}
 
 
	}
}
А вот чтобы иконки отображались в заголовке самого элемента ComboBox не знаю как сделать, и в документации по этому поводу ничего нет. Может кто-нибудь сталкивался с такой задачей, или имеет представление в каком направлении двигаться в данном вопросе?

Старый 02.06.2013, 14:35
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
19. Controls Part2. ComboBox. Переопределям CellRenderer
http://flashpress.ru/blog/controls-part2/

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

Регистрация: Apr 2013
Сообщений: 8
Цитата:
Сообщение от expl Посмотреть сообщение
19. Controls Part2. ComboBox. Переопределям CellRenderer
http://flashpress.ru/blog/controls-part2/
Спасибо, тут даже больше чем я ожидал. : )

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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