![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
Новичок ![]() Группа: Новичок Сообщений: 4 Регистрация: 9.03.2012 Пользователь №: 10920 ![]() |
Привет, друзья!
ActionScript 2.0. Есть 2 текстовых поля для ввода текста с переменными n и m и один динамический текст с переменной s. Переменные присвоены в палитре "свойства", раздел "параметры". На кнопке код: on(release){s = Number(n) + Number(m);} Почему при вводе чисел в поля n и m не выводится их сумма?? почему не работает перевод текста в числа функцией Number?? выводит во всех проверенных мною версиях Adobe Flash только одно -- NaN. Подскажите, где здесь может быть ошибка. Всем спасибо. Сообщение отредактировал garrrold - 11.03.2012 - 15:50 |
|
|
![]()
Сообщение
#2
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4739 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
garrrold
Нужно писать Number, а ты в обработчике нажатия написал Numder. -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]()
Сообщение
#3
|
|
Новичок ![]() Группа: Новичок Сообщений: 4 Регистрация: 9.03.2012 Пользователь №: 10920 ![]() |
garrrold Нужно писать Number, а ты в обработчике нажатия написал Numder. Да нет, я просто опечатался. Number, конечно же. Я просто вообще ничего не понимаю, переустанавливал Flash, Adobe AIR, flash-плеер -- никакого результата... точнее результат один -- NaN... Сообщение отредактировал garrrold - 11.03.2012 - 15:51 |
|
|
![]()
Сообщение
#4
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4739 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Цитата Да нет, я просто опечатался. Number, конечно же. garrrold, главное, чтобы в AS коде своей флешки ты не опечатался. Если этот код у тебя правильно задан, но выдаёт "NaN", значит ты мог не так считывать данные из полей. Перед присваиванием суммы переменной s задай строковые значения переменным n и m. Если код сработает корректно, значит у тебя Number работает корректно (как и должно) и проблема именно в считывании данных из текстовых полей. Код n = "1";
m = "1"; s = Number(n) + Number(m); -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]()
Сообщение
#5
|
|
Новичок ![]() Группа: Новичок Сообщений: 4 Регистрация: 9.03.2012 Пользователь №: 10920 ![]() |
Код n = "1"; m = "1"; s = Number(n) + Number(m); этот код работает корректно. проблема именно в считывании данных из текстовых полей. как это исправить? почему при вводе данных в текстовое поле Number отказывается переводить их в число? Сообщение отредактировал garrrold - 12.03.2012 - 13:53 |
|
|
![]()
Сообщение
#6
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1102 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Цитата Переменные присвоены в палитре "свойства", раздел "параметры". Не надо так делать. Вкупе с обработчиком на кнопках on(release) не сложно запутаться в путях и областях видимости Надо именовать само текстовое поле и потом обращаться к его переменной text, например: Код trace(Number(имя_моего_текстового_поля.text)) Ну и обработчик тоже стоит делать по-другому, писать в кадре, а не на самой кнопке: Код имя_моей_кнопки.onRelease=function() { ... }
-------------------- |
|
|
![]()
Сообщение
#7
|
|
Новичок ![]() Группа: Новичок Сообщений: 4 Регистрация: 9.03.2012 Пользователь №: 10920 ![]() |
сделал вот так on(release){s.text = Number(n.text)+ Number(m.text);}
работает. будем ковыряться дальше, всем спасибо Сообщение отредактировал garrrold - 12.03.2012 - 14:45 |
|
|
![]()
Сообщение
#8
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4739 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
garrrold
Всегда пожалуйста. Цитата почему при вводе данных в текстовое поле Number отказывается переводить их в число? Как я уже объяснил ранее, не Number отказывается переводить, а данные прочитаны некорректно. Когда исходные данные "пустые" (потому что некорректно прочитаны и в переменных n и m "пусто"), то и сумма будет "NaN". Соответственно правильно их прочитав, можно будет их конвертировать в числовые значения и получить сумму (что ты наконец-то сделал и всё заработало). Правильный подход к считыванию значений текстовых полей - это считывание через обращение к свойству text именованного текстового поля (name.text), а не "старым методом" через задание имени переменной в свойствах поля. Этот метод применялся активно во времена Флеш 4 и в некоторых случаях работает вполне легко (с использованной тобою простой записью), но в более сложных случаях, которые встречаются чаще, так не работает (т.е. к текстовым полям и переменным уже сложнее обратиться, из-за области видимости). Начиная с Флеш 5 активно используется новый метод, так сказать ООПшный, через name.text, подобно другим ООП ЯП, и именно он и рекомендован к использованию (во всех версиях ActionScript). Тебе явно попался устаревший пример кода или руководство с описанием такого метода. И я тебя и подводил к тому, чтобы ты взял и почитал хепл/документацию/руководство и правильно записал код чтения данных с текстовых полей, но chingachgoog решил не церемониться и сразу выдал правильную запись кода ![]() -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]()
Сообщение
#9
|
|
Новичок ![]() Группа: Новичок Сообщений: 3 Регистрация: 14.03.2012 Пользователь №: 10932 ![]() |
Сталкивался с подобной проблемой, только не из текстовых полей, а с данными полученными с сервера, от скрипта рнр. Особенно проблемно с десятичными дробями, выкручивался разделяя строку по запятой в дроби и загоняя данные в массив, а потом уже из массива конвертировал строку в номер. Просто сменить тип переменной загнав ее в var newNum:Number = new Number(myVar) - никак. В учебнике написано что этот способ правильный, НО с данными полученными с сервера это не работает, может потому что там запятая стоит в десятичной дроби а во флешке точка
![]() |
|
|
![]()
Сообщение
#10
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4739 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
webs-
Проблем с данными полученными из сервера в идеале быть не должно ![]() Я с дробными данными с сервера не работал, только с другими типами данных и с ними проблем не было. Но, к примеру, насчёт знака дроби, то это может сказаться, если в разных языках используется различный символ разделителя. Поэтому если тебе данные с сервера приходят с запятой, а в AS (как и в большинстве языков программирования) используется точка, то тут есть два варианта. Или с сервера возвращай дробные числа с точкой, или замени в "строке данных с сервера" запятую на точку, и тогда, сконвертировав строку в число, ты получишь правильный результат. -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 19.01.2013 - 01:08 |