Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.09.2016, 13:15
grafillo! вне форума Посмотреть профиль Отправить личное сообщение для grafillo! Найти все сообщения от grafillo!
  № 1  
Ответить с цитированием
grafillo!

Регистрация: Sep 2011
Сообщений: 366
По умолчанию Чисто для интереса вопрос по текст филд

Написал два приложения в одном данный с текстфилда можно сразу использовать как цифры во втором приходится конвертить, мучался мучался почему так, так и не допёр даже копировал текстфилды из одного в другое всё равное не пашет выдаёт что данные стринг

в первом код работает
Код AS3:
postWind.postLimit.text = 90;
	postWind.postSucc.text = 0;
во втором только так
Код AS3:
minNum =  Number(minTxt.text);
	maxNum = Number(maxTxt.text)-minNum;
Может проблема с разработчиками флеша и он работает на рандоме?)

Старый 30.09.2016, 13:53
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ох... как вы что-то там пишите какие то приложения, когда такие вопросы с стольких лет работы.
В первом случае - вы присваиваете тексту число (конвертируете нумбер в стринг) , может ли быть текст таким ^%$&^% или таким 987987897 ? Может. А во втором случае вы пытаетесь из ТЕКСТА вычесть число, или просто сделать число из текста. Вуаля : ?*:*:%?*: - 90 что получится ? То то же.
__________________
Марк Tween

Старый 30.09.2016, 14:27
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 3  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
текстфилд всегда возвращает строку т.к. это ТЕКСТфилд

Старый 30.09.2016, 19:59
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
undefined - не морочьте людям голову - в примере операции присвоения.
__________________
Марк Tween

Старый 01.10.2016, 16:30
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Может проблема с разработчиками флеша и он работает на рандоме?)
Нет, во флеше этот механизм работает без багов. В данном случае проблема точно в твоем кривом коде.

А почему так: текстфилд - работает только со строкой. Ему нельзя присвоить число в поле text, ровно как и нельзя получить число из него. И в первом и во втором случае нужно приведение типов.
Чтобы присвоить текстфилду число, его нужно сначала сконвертировать в строку.

Код AS3:
someTextField.text = Number(10).toString();
или так
someTextField.text = 10 + ""; // при конкатенации со строкой, число автоматически сделается строкой
или так
someTextField.text = String(10);
и обратный процесс
Код AS3:
var someNumber:Number = parseFloat(someTextField.text); // ну или parsInt() если нужно целое
И не нужно тут рассказывать сказки про то, как там чудесным образом работает присвоение числа полю text.

Наверняка этот postLimit - это сеттер, внутри которого происходит что-то вроде этого:
Код AS3:
public function set postLimit(value:int):void {
   someTextField.text = String(value);
}
__________________
Ко мне можно и нужно обращаться на ты)

Старый 02.10.2016, 23:54
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
И не нужно тут рассказывать сказки про то, как там чудесным образом работает присвоение числа полю text.
Костя не глупи - работает, именно так как я написал, а вот строке число не присвоишь. Возможно ты ошибся.
Только сегодня сам писал код на одну фишку tf.text = x / 100 - прокатывает идеально
__________________
Марк Tween

Старый 03.10.2016, 06:54
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от in4core Посмотреть сообщение
Костя не глупи - работает, именно так как я написал, а вот строке число не присвоишь. Возможно ты ошибся.
Только сегодня сам писал код на одну фишку tf.text = x / 100 - прокатывает идеально
Сань, ты не о том говоришь. Я говорю про поле text у TextField. Оно String, и не может принимать ничего другого, ровно как и отдавать. Ты не сможешь ему присвоить число без конвертации в тип String. Неважно явным или неявным образом, но конвертация необходима.
Цитата:
tf.text = x / 100 - прокатывает идеально
Не прокатывает. Не знаю что ты там за TextField используешь или Flex SDK, но у меня такой код сразу кидает компайл тайм ошибку:
Цитата:
Error: Implicit coercion of a value of type Number to an unrelated type String.
Естественно, приложение не собирается.
В твоем случае это может сработать, если у тебя "x" не типизированная переменная. Тогда, могу предположить, что вся конструкция может неявным образом конвертнуться в стринг
__________________
Ко мне можно и нужно обращаться на ты)


Последний раз редактировалось caseyryan; 03.10.2016 в 07:14.
Старый 03.10.2016, 12:52
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Костя да, ты прав. Одна из переменных бралась из объекта. Но с другой стороны, тогда это очень странно в любом случае - производя операцию деления или умножения - мы строку не получим ) а оно почему то неявно его преобразует. Почему же когда пишем в лоб не преобразует?
__________________
Марк Tween

Старый 03.10.2016, 16:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Из-за динамической типизации в AS3
Я лично стараюсь всегда использовать правильные типы, где это вообще возможно, чтобы самому себе палки в колеса не ставить
__________________
Ко мне можно и нужно обращаться на ты)

Старый 03.10.2016, 20:15
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Костя по евентам не очень удобно я считаю делать строгую типизацию, можно конечно создать 101 публичную переменную, а можно 1 типа массива или объекта и в нем передавать кучу всего, чего надо, причем переменные могут быть разных типов. Конечно можно писать каждый раз a[0] as int например, но это так некошерно
__________________
Марк Tween

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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