Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Text Input в Числовое значение (http://www.flasher.ru/forum/showthread.php?t=206018)

arhitec 07.01.2014 18:40

Text Input в Числовое значение
 
Всем привет!
Я начинающий в Action Script, поэтому вопрос банальный, ответ на который к сожалению найти не смог.
И так, есть два текстовых поля типа Input в сцене. В каждое из них нужно ввести цифру, после нажатия кнопки получить результат сложения этих двух чисел.
Как оказалось введенные цифры являются стрингом а не цифрой, а значит для начала нужно перевести стринг в цифру, а уж затем полученный результат складывать.
Как перевести текст из Text Input в число?
Попытки использовать Number () или FloatInt() ни к чему не привели :(
Помогите, пожалуйста.

Isfet 07.01.2014 18:42

любое из приведенных ниже
Код AS3:

int(textfield.text);
Number(textfield.text);
uint(textfield.text);


arhitec 07.01.2014 19:07

Верно ли я понимаю, что textfield - это и есть переменная, значение которой нужно конвертировать?
Наверное правильнее было изложить свое виденье в коде:
Первое поле Input имеет имя: number1;
Первое поле Input имеет имя: number2;
Код AS3:

n1 = Number (number1.text); // Присваиваю переменной n1 полученное значение после конвертации из текста в число переменной number1
n2 = Number (number2.text); // Присваиваю переменной n2 полученное значение после конвертации из текста в число переменной number2
summa = n1 + n2;
trace (summa);

Увы, этот код не работает, а значит я не верно понимаю предложенный вариант...
Поиск пока ни к чему не приводит :(

caseyryan 07.01.2014 19:19

Нет, не верно. Конвертируется то, что содержится у объекта TextField в свойстве text
Можно еще так перевести в целочисленное значение
Код AS3:

var sum:int = parseInt(inputText1.text) + parseInt(inputText2.text);

и в число с плавающей точкой
Код AS3:

var sum:Number = parseFloat(inputText1.text) + parseFloat(inputText2.text);


Isfet 07.01.2014 19:44

выложите код, тогда скаже что не так.

что выдает если добавить такие строки??
Код AS3:

trace(number1);
trace(number1.text);


arhitec 07.01.2014 19:55

Что-то не работает :( Видимо косячный у меня мозг :)

Код AS3:

trace(number1);

выдает: [object TextField]

Я выкладываю исходный файл. Навертел конечно, но что поделаешь - учусь :)
Ссылка на яндекс-диске, сюда не смог залить файл.
http://********/d/pz1mru2OFbSBH

Akopalipsis 07.01.2014 20:16

Цитата:

выдает: [object TextField]
Это значит что экземпляр класса TextField доступен по ссылке number1. Единственное но может быть в том, что trace(number1); нужно писать там, где происходит конвертация типов, то есть там, где вы хотите из текста сделать цифры. если оно там доступно, то проверьте свойство text
Код AS3:

trace(number1.text);

Если покажет текст, то проблем не должно быть, а если нет, то Вы просто не задали значение.

Isfet 07.01.2014 20:18

залейте сюда, для этого - расширенный режим -> управление вложениями

arhitec 07.01.2014 20:23

Вложений: 1
Удалось залить в архиве, FLA-файл не заливается :(
У меня файл разбит на два кадра. Я предполагаю, что из-за этого и проблемы.
Вложение 30333

TWETTI 07.01.2014 20:33

Уберите первые две строки:
Код AS3:

var number1: String = "1";
var number2: String = "2";

number1 и number2 это имена текстовых полей.
В функции replay можете получить сумму:
Код AS3:

var sum:int = parseInt(number1.text) + parseInt(number2.text);
trace(sum);


arhitec 07.01.2014 20:40

Все, трейс выдал нужный результат.
Я вставил код в функци. Replay и трейс стал показывать нужную сумму.
А вот как теперь вывести полученное значение во втором кадре в динамический текст?

TWETTI 07.01.2014 20:51

Вложений: 1
Не работает потому, что во втором кадре у вас ключевые кадры в которых другие текстовые поля. Исправил вам. Смотрите прикрепленный файл.

arhitec 07.01.2014 21:00

Верно ли я понял, что моя ошибка была в том, что я формы на разных кадрах сделал в одном слое, а надо было в разных?

Добавлено через 2 минуты
Верно ли я понимаю, что ошибка была в том, что я формы на разных кадрах сделала в одном слое? А надо было в разные слои?

Еще вопрос.
Код AS3:

var sum:int = parseInt(number1.text) + parseInt(number2.text);
trace(sum);
summa.text = sum.toString();
stop();

summa.text = sum.toString(); - что здесь происходит? Перевод числовго значения переменной в текстовое?
А выводит информацию именно динамическое поле, верно?

TWETTI 07.01.2014 21:19

У вас в первом и во втором кадре разные текстовые поля. Во втором кадре вы пытаетесь сложить числа полученные из текстовых полей второго кадра, но вводили вы числа в текстовые поля первого кадра. Чтобы исправить это я сделал вместо KeyFrame просто Frame. Теперь текстовые поля в 1 и во втормо кадре одинаковые.

Да, перевод числа в текст и вывод текста в динамическое текстовое поле.

arhitec 07.01.2014 21:33

Спасибо огромное, вроде начало укладываться (ЧтоТо) :)


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

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