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

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

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Как реализовать выбор-подстановку как у Гугла?

У Гула переводчика (http://translate.google.ru) на днях появилась новая фича - можно кликнуть по слову в переводе и откроется список из вариантов, кликнув по которому производится замена слова.

У меня совсем другое, но нужно реализовать что-то подобное. Имеется несколько массивов из первых элементов которых формируется фраза, например "Хорошо в деревне летом", т. е. каждое слово - это первый элемент каждого массива. Мне нужно, чтобы при наведении на каждое слово оно превращалось в элемент DropDownList с элементами соответствующего массива и по клику это слово заменялось. Например, кликнув по "Хорошо" появляется список из вариантов из первого массива: "Хорошо", "Плохо", "Скучно", "Весело". Кликнули по "Весело" - получилась фраза "Весело в деревне летом". Ну и так с каждым словом.

Вот как подобное лучше реализовать? Думал над ItemRenderom, но ума не приложу как его можно вставить например в Label.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Жмакаете по слову,
находите его размеры и местоположение,
сверху комбобоксик подгоняете, у которого датапровайдер у вас уже есть

Или сразу создаете толпу комбобоксов задаете им стиль, чтоб сливался с окружающей средой.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Ну вот допустим первоначальная фраза у меня в Label. И как можно найти размеры и местоположение отдельно взятого слова?

Старый 20.12.2010, 11:57
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 4  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Тут я не помогу, вроде есть какие-то методы getBounds или measureText. Лучше в хелпе поискать или дождаться кого-нить, кто знает.

Добавлено через 4 минуты
Вот вариант getCharBoundaries() у textField, правда textField протектная поляна, наследуйтесь, исследуйте.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 20.12.2010, 12:33
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 5  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
GBee, спасибо, посмотрю.
Может быть проще создать HBox и туда вставлять объекты label при наведении на которые они становятся невидимыми, но появляется comboBox с данными массива и при выборе итема, значение его передается в этот label.
Проблема только в том, что у меня места для этого HBox мало, всего 250 пикселей, а фраза может состоять и из 10 слов.
Сейчас буду пробывать.

Старый 20.12.2010, 12:46
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 6  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
А если с состояниями поколдовать? Одним компонентом обойтись.

Старый 20.12.2010, 13:58
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 7  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
А если с состояниями поколдовать? Одним компонентом обойтись.
Даже не представляю как можно обойтись одним компонентом?

Старый 21.12.2010, 08:01
PikseL вне форума Посмотреть профиль Отправить личное сообщение для PikseL Посетить домашнюю страницу PikseL Найти все сообщения от PikseL
  № 8  
Ответить с цитированием
PikseL
 
Аватар для PikseL

Регистрация: Oct 2006
Адрес: Russia, Tyumen
Сообщений: 130
Отправить сообщение для PikseL с помощью ICQ Отправить сообщение для PikseL с помощью Skype™
Что-то типа:
Код AS3:
var s:String = yourLabel.text;
var m:TextLineMetrics = yourLabel.measureText(s);
trace(m.width + ':' + m.height);

Старый 21.12.2010, 10:10
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 9  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
Что-то типа:
Для flash это да, тоже смотрел, а для flex вполне Hgroup нормально расставляет label.

Что-то я разучился как элементы создавать. Пробую так как в коде ниже, пишет, что объекта с именем например combo1 не существует (null), хотя его создание трейсится.

Код AS3:
	<fx:Script>
		<![CDATA[
			import mx.collections.IList;
 
			import spark.components.ComboBox;
			import spark.components.Label;
 
			private var newLabel:Label;
			private var newCombo:ComboBox;
			private var myArray1:Array = ['Хорошо','Плохо','Весело','Скучно'];
			private var myArray2:Array = [' в',' на',' у',' под'];
			private var myArray3:Array = [' деревне',' городе',' селе',' море'];
			private var myArray4:Array = [' летом.',' зимой.',' всегда.',' никогда.'];
 
			protected function button1_clickHandler(event:MouseEvent):void
			{
				var tempArray:Array = new Array();
					tempArray.push(myArray1[0]);
					tempArray.push(myArray2[0]);
					tempArray.push(myArray3[0]);
					tempArray.push(myArray4[0]);
				for (var i:int =0; i<tempArray.length; i++){
					newLabel = new Label();
					newLabel.text = tempArray[i];
					newLabel.name = 'name' + i;
					labelG.addElement(newLabel);
					newCombo = new ComboBox();
					newCombo.x = newLabel.x;
					newCombo.visible = false;
					newCombo.name = 'combo' + i;
					newCombo.dataProvider = myArray1 as IList;
					labelG.addElement(newCombo);
					newLabel.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
					newLabel.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
				}
			}
 
			protected function onMouseOver(event:MouseEvent):void
			{
				event.currentTarget.visible = false;
				var currName:String = event.currentTarget.name;
				trace ('currName ' + currName.charAt(4));
				var currCombo:ComboBox = this.getChildByName('combo'+currName.charAt(4)) as ComboBox;
				currCombo.visible = true;
			}
			protected function onMouseOut(event:MouseEvent):void
			{
 
			}
 
		]]>
	</fx:Script>
 
	<fx:Declarations>
 
	</fx:Declarations>
	<s:HGroup x="32" y="92" width="670" height="27" id="labelG">
	</s:HGroup>
	<s:Button x="32" y="157" label="Сформировать фразу" click="button1_clickHandler(event)"/>
И ещё вопрос параллельно. Как можно обратиться к переменной по имени? Чтобы вот эту конструкцию заменить на цикл перебирая: myArray1, myArray2 и т. д.:

Код AS3:
tempArray.push(myArray1[0]);
tempArray.push(myArray2[0]);
tempArray.push(myArray3[0]);
tempArray.push(myArray4[0])
;

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Что-бы что-то достать, надо сначала это что-то положить. У вас ComboBox никуда не добавляется.
Цитата:
Чтобы вот эту конструкцию заменить на цикл перебирая: myArray1, myArray2 и т. д.:
Сложить их в массив.

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

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

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


 


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


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