PDA

Просмотр полной версии : textField input


fduch
11.03.2013, 21:58
Стыдно спрашивать, но :)))
Запрашиваем ввод текста от юзверя:
var sendmail_tf:TextField = new TextField ();
sendmail_tf.maxChars = 150;
sendmail_tf.type = TextFieldType.INPUT;
sendmail_tf.wordWrap = true;
sendmail_tf.x = 10; sendmail_tf.y = 50; sendmail_tf.width = 380; sendmail_tf.height = 160; sendmail_tf.border = true;
cont_sendmail.addChild(sendmail_tf);

В какой переменной будет то, что ввелось???
trace (sendmail_tf); trace(sendmail_tf.text);
недают разультата.

КорДум
11.03.2013, 22:01
sendmail_tf.text
Не дает результата - ищите архитектурную ошибку.

fduch
11.03.2013, 22:09
А оно записывается в переменную сразу после ввода, или после какогото действия? ок нажать гденить или еще что?

КорДум
11.03.2013, 22:22
Через геттер text можно получить введенный текст у текстфилда в любой момент времени. Не понимаю, что Вам нужно.

Wolsh
11.03.2013, 22:31
Намекаю: Справка по классу TextField — раздел События (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/text/TextField.html#eventSummary) - Event.CHANGE (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/text/TextField.html#event:change).

fduch
11.03.2013, 23:02
sendmail_tf.addEventListener(TextEvent.TEXT_INPUT, textInputHandler);
sendmail_tf.addEventListener(Event.CHANGE, textInputHandler);

Повесил прослушку....
техтинпутхандлер не отрабатывает ни так и так.

Добавлено через 1 минуту
Через геттер text можно получить введенный текст у текстфилда в любой момент времени. Не понимаю, что Вам нужно.

Мне нужно чтобы "trace(sendmail_tf.text);" Выдало то, что я ввел в инпут.

MikroAcse
11.03.2013, 23:10
var tf:TextField = new TextField();
addChild(tf);
tf.text = "Введите текст...";
tf.type = TextFieldType.INPUT;
tf.addEventListener(Event.CHANGE, onChange);

function onChange(e:Event):void {
trace(tf.text);
}
Или
var tf:TextField = new TextField();
addChild(tf);
tf.text = "Введите текст...";
tf.type = TextFieldType.INPUT;
tf.addEventListener(Event.CHANGE, onChange);

var debug:TextField = new TextField();
addChild(debug);
debug.y = tf.textHeight + 4;
debug.text = "Ожидание...";
debug.autoSize = TextFieldAutoSize.LEFT;

function onChange(e:Event):void {
debug.text = "Вы только что изменили текст: " + tf.text;
}

fduch
11.03.2013, 23:18
Да все так и есть! неработает!

Добавлено через 1 минуту
Аа... Вот оно.....
Оно у меня обьявляется 2а раза!
Сперва public var потом var )
Теперь все работает спс.

Добавлено через 5 минут
А вопрос не совсем в тему, как кодировку поменять, чтобы в mysql норм виделась?
в mysql стоит utf8_unicode_ci

MikroAcse
11.03.2013, 23:32
Аа... Вот оно.....
Оно у меня обьявляется 2а раза!
Сперва public var потом var )
Теперь все работает спс.
Если не понял, почему так происходит:
public var variable = 1;
public static var variable = 2;
public function func() {
var variable = 0;
trace(variable); // 0
}
public var variable = 1;
public static var variable = 2;
public function func() {
trace(variable); // 1
}
public static var variable = 2;
public function func() {
trace(variable); // 2
}
Вот так можно обратиться ко всем variable's:
public var variable = 1;
public static var variable = 2;
public function func() {
var variable = 0;
trace(variable, this.variable, ThisClass.variable); // 0 1 2
}
Т.е. переменные могут быть локальными, статическими и, как-бы так сказать, классовыми (private/public/protected/internal const/var ...).
Переменная в локальной среде (в нашем случае это: var variable = 0) имеет наивысший "приоритет".
Переменная в "классовой" среде имеет приоритет ниже, чем в локальной, но и больше, чем в статической среде.
Переменная в статической среде имеет найнизший приоритет.
Надеюсь, понятно рассказал :)
Прошу прощения за незнание наименований.

fduch
12.03.2013, 00:04
Прикольно, спс, учту, запишу себе)))
Вопрос на эту же тему...
Я когда вывожу несколько данных допустим в цыкле, использую одну и туже переменную, обьявляя ее постоянно и смещаю координаты вывода.
for (var i:int = unit_list_begin; i < unit_list_begin+kol_unit; i++) {

var ataka:TextField = new TextField();
ataka.y = yy; ataka.x = xx; ataka.text = "Атака: " + load_unit.ataka[i];
ataka.setTextFormat(fontFormat); cont_unit_list.addChild(ataka);
Это нормальный способ "сэкономить" переменные, или как то проще можно поступить?

MikroAcse
12.03.2013, 00:08
Все нормально, если вам эта переменная понадобится только в этой функции/цикле.