Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Узнать все TextField'ы или хотя бы в которых вызвали .text (http://www.flasher.ru/forum/showthread.php?t=142813)

Скрипун 31.07.2010 15:28

Узнать все TextField'ы или хотя бы в которых вызвали .text
 
Нужно найти все ссылки на все текст-филды.. в которых заюзали .text или htmlText
копал в сторону prototype что-то не помогло

s8000_1 31.07.2010 15:33

Сделать extended TextField, во всем проекте заменить TextField на ExTextField и проверять.

Котяра 31.07.2010 15:43

onChange не прокатит?

Скрипун 31.07.2010 15:50

ммм.. а как быть с Flex и иными либами в которых не смогу сделать extend....?

s8000_1 31.07.2010 18:06

Скрипун, во флексе label, сделайте myLabel, в чем проблема

Скрипун 31.07.2010 18:09

так дело в том что таких элементов куча... и все переопределять не получиться.
Хочется что-то универсальное, ведь в конечном итоге все равно TextField, вот и для него надо делать...

s8000_1 31.07.2010 18:26

Скрипун, а какой глобальный смысл это делать-то? Может, подскажу другое решение.

Скрипун 31.07.2010 18:27

динамическая смена языка :)

s8000_1 31.07.2010 18:36

Скрипун, это как вы переводить, интересно собрались... Можно подробнее?

Я локализую так:

<label text="{Locale.submitLabel}"/>

+ менеджер, который в зависимости от языка выставляет нужные значения cтатичным переменным класса Locale

Если есть числовые значения какие-нибудь, например "10 предметОв", то так
text="{Locale.get(Locale.itemLabel,this.itemNum)}"

Скрипун 31.07.2010 18:50

а что ты делаешь когда надо с as забить значения?
tf.text = ...

Добавлено через 24 минуты
Locale это что?

s8000_1 31.07.2010 19:37

Скрипун, ну в случае с tf.text=... можно использовать BindingUtils, например, и точно так же менять извне, текстовые поля изменятся сами уже.

Locale - это самописный класс со статичными функциями локализации.

KOCTuK 18.04.2011 08:45

Есть мувик, в нём 100+ текстфилдов. Нужно, чтоб при изменении любого текстфилда узнать его имя (что-то типа одного события onChange, но на все текстфилды).
Подскажите как реализовать?
Я 1Сник, но партия приказала рисовать на АС.

goodguy 18.04.2011 10:05

Прийдется к каждому текстфилду вешать событие Event.CHANGE, а в обработчике проверять event.target, чтобы узнать какой именно текст филд изменился

udaaff 18.04.2011 10:18

Достаточно ловить Event.CHANGE на фазе всплытия родителем и смотреть event.target.

KOCTuK 18.04.2011 10:58

Код AS3:

MovieClip.TextField[такой-то].onChange = function()
{
        trace(TextField[такой-то].text);               
};

Вот надо что-то типа такого.

А где ловить "Event.CHANGE", у МС нет события на изменение ?
Я немного деревянный в АС.

udaaff 18.04.2011 11:04

Код AS3:

var mc:MovieClip = new MovieClip();
mc.addEventListener(Event.CHANGE, changeHandler);
 
var tf1:TextField = new TextField();
tf1.text = "asdf";
tf1.type = TextFieldType.INPUT;
 
var tf2:TextField = new TextField();
tf2.text = "qwer";
tf2.type = TextFieldType.INPUT;
tf2.x = 100;
 
addChild(mc);
mc.addChild(tf1);
mc.addChild(tf2);
 
function changeHandler(event:Event):void
{
        trace((event.target as TextField).text);
}


goodguy 18.04.2011 11:09

Допустим есть некий DisplayObjectContainer (например экземпляр класса MovieClip добавленный на сцену), в который добавлены текст филды.
Код AS3:

var mc:MovieClip = new MovieClip(); 
stage.addChild(mc);
var tf:TextField = new TextField();
mc.addChild(tf); // добавляем в мувик текст филд
 
mc.addEventListener(Event.CHANGE, traceTextField, true); // добавляем к мувику слушатель на изменение с useCapture = true;
 
function traceTextField(e:Event):void {
      trace(e.target); // ловим цель события
}

Добавлено через 1 минуту
опоздал )

KOCTuK 18.04.2011 11:45

Хм.. что-то не то делаю. AC2.
МС у меня созданный ручками с самого начала - addEventListener(Event.CHANGE, traceTextField), я так понимаю можно вставить на любой кадр до кадра 'Х' (в котором будут менять текстфилды).

function traceTextField(e:Event?):void {
trace(e.target); // ловим цель события
}

Ругается &quot;Не удалось загрузить класс или интерфейс 'Event';

goodguy 18.04.2011 13:32

Цитата:

что-то не то делаю. AC2.
Так АС2 или АС3? Неплохо бы для начала с этим определиться. Тема-то в разделе АС3.

udaaff 18.04.2011 17:15

KOCTuK, для оформления своего кода надо использовать соответствующие теги.

alatar 18.04.2011 17:33

Цитата:

Сообщение от Скрипун (Сообщение 926177)
Хочется что-то универсальное, ведь в конечном итоге все равно TextField, вот и для него надо делать...

Далеко не везде.
Цитата:

Сообщение от Скрипун (Сообщение 926183)
динамическая смена языка :)

http://help.adobe.com/ru_RU/flex/usi...9084-7fcf.html


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

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