Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отсчет символов (http://www.flasher.ru/forum/showthread.php?t=163700)

kaploson 10.08.2011 17:02

Отсчет символов
 
А возможно ли в реальном времени отслеживать количество оставшихся символов. т.е. Оставшиеся символы = макс. кол-во символов - написанные символы. Например максимально количество символов = 60 , мы набрали 2 символа и оно показывает строку - оставшихся символов осталось 58, набрали еще один символ и уже 57.

Код AS3:

title_input.type = TextFieldType.INPUT;
title_input.maxChars=60;
var temper = title_input.length;
var maxchar = title_input.maxChars;
var result_temp =  maxchar - temper ;
result_tf.x = 100;
result_tf.y = 100;
result_tf.text = result_temp;


Подскажите пожалуйста. :)

Hidest 10.08.2011 17:07

Ну а проверить не судьба? На первый взгляд все должно работать. Только надо мерить длину строки title_input.text а не title_input.

kaploson 10.08.2011 17:09

Все работает, но не в реальном времени, именно показывает просто maxchar, то есть от этого значения не отнимает значение написанных символов =(

Сейчас попробую как вы посоветовали =)

SvetozarPNZ 10.08.2011 17:12

Надо переменную result_temp изменять на событие ввода с клавиатуры.

kaploson 10.08.2011 17:14

Hidest, сделал как вы сказали не получилось, все равно не работает =(
Просто печатает число 60 =(

SvetozarPNZ, а поясните, что именно вы имеете ввиду, а то я не очень понимаю =(

Hidest 10.08.2011 17:19

А, ну да :)).. Почитайте про TextEvent.TEXT_INPUT в документации (http://help.adobe.com/en_US/FlashPla...tml#TEXT_INPUT), там и пример есть. Нужно слушать это событие, возникающее при вводе текста, и в обработчике уже считать.

kaploson 10.08.2011 17:27

Ну я вроде касяк понял, сейчас буду думать и делать =) Напишу сюда как только получится у меня что-нибудь =)

PsixokoT 11.08.2011 12:08

Код AS3:

private var title_input:TextField;
private var result_tf:TextField;

Код AS3:

title_input = new TextField();
title_input.type = TextFieldType.INPUT;
title_input.maxChars=60;
title_input.addEventListener(TextEvent.TEXT_INPUT,updateResultTf);
addChild(title_input);
 
result_tf = new TextField();
result_tf.x = 100;
result_tf.y = 100;
addChild(result_tf);

Код AS3:

private function updateResultTf(e:TextEvent):void
{
        var temper:int = (e.target as TextField).length;
        var maxchar:int = (e.target as TextField).maxChars;
        var result_temp:int =  maxchar - temper ;
        result_tf.text = result_temp.toString();
}


goodguy 11.08.2011 12:37

Текст инпут будет выдывать не верный результат, так как срабатывает сразу после ввода, еще до того, как будет получено новое значение длины текста. Т.е. ввел 1 символ, прога покажет 0, ввел 2, покажет 1 и т.д.
Я бы лучше слушал KeyboardEvent.KEY_UP на этом текстовом поле
Код AS3:

title_input.type = TextFieldType.INPUT;
title_input.maxChars=60;
var temper = title_input.length;
var maxchar = title_input.maxChars;
var result_temp =  maxchar - temper ;
result_tf.x = 100;
result_tf.y = 100;
result_tf.text = result_temp;
result_tf.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
 
function onKeyUp(e:KeyboardEvent):void {
      trace(maxChars - result_tf.text.length + " символов осталось");
}

Конечно, можно и текст инпут подогнать, но это просто еще один вариант

elmortem 11.08.2011 13:03

Цитата:

Сообщение от goodguy (Сообщение 1020405)
Я бы лучше слушал KeyboardEvent.KEY_UP на этом текстовом поле

Или даже Event.CHANGE, это логичнее.


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

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