![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
У Гула переводчика (http://translate.google.ru) на днях появилась новая фича - можно кликнуть по слову в переводе и откроется список из вариантов, кликнув по которому производится замена слова.
У меня совсем другое, но нужно реализовать что-то подобное. Имеется несколько массивов из первых элементов которых формируется фраза, например "Хорошо в деревне летом", т. е. каждое слово - это первый элемент каждого массива. Мне нужно, чтобы при наведении на каждое слово оно превращалось в элемент DropDownList с элементами соответствующего массива и по клику это слово заменялось. Например, кликнув по "Хорошо" появляется список из вариантов из первого массива: "Хорошо", "Плохо", "Скучно", "Весело". Кликнули по "Весело" - получилась фраза "Весело в деревне летом". Ну и так с каждым словом. Вот как подобное лучше реализовать? Думал над ItemRenderom, но ума не приложу как его можно вставить например в Label. |
|
|||||
|
Жмакаете по слову,
находите его размеры и местоположение, сверху комбобоксик подгоняете, у которого датапровайдер у вас уже есть Или сразу создаете толпу комбобоксов задаете им стиль, чтоб сливался с окружающей средой.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Тут я не помогу, вроде есть какие-то методы getBounds или measureText. Лучше в хелпе поискать или дождаться кого-нить, кто знает.
Добавлено через 4 минуты Вот вариант getCharBoundaries() у textField, правда textField протектная поляна, наследуйтесь, исследуйте.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
GBee, спасибо, посмотрю.
Может быть проще создать HBox и туда вставлять объекты label при наведении на которые они становятся невидимыми, но появляется comboBox с данными массива и при выборе итема, значение его передается в этот label. Проблема только в том, что у меня места для этого HBox мало, всего 250 пикселей, а фраза может состоять и из 10 слов. Сейчас буду пробывать. |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
А если с состояниями поколдовать? Одним компонентом обойтись.
|
|
|||||
|
Что-то типа:
|
|
|||||
|
Цитата:
Что-то я разучился как элементы создавать. Пробую так как в коде ниже, пишет, что объекта с именем например combo1 не существует (null), хотя его создание трейсится. <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)"/> ; |
|
|||||
|
Что-бы что-то достать, надо сначала это что-то положить. У вас ComboBox никуда не добавляется.
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|