![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
|
В общем такая проблема: создаю простой мувик с текстовым полем типа Input Text, затем поле Dynamic Text и кнопка.
В окошке Var: поля Input Text ввожу переменную "inp", тоже самое и для Dynamic Text - переменная "res". В кнопке пишу код: Создаю swf, в поле для ввода пишу 5. Казалось бы результат должен быть 15, а нифига! Результат такой: 105 ! Как буд-то бы это строчные данные, то есть "10"+inp (код выдал тот же результат: 105). Ладно, меняю res = 10+inp; на res = 10-inp;, создаю swf, снова ввожу 5 и получаю ожидаемую разницу: 5 ! То есть при суммировании либо 10 воспринимается как строковый тип данных, то ли содержимое переменной inp, а при вычитании всё нормально. В общем прилагаю файл, сам не знаю чё и думать ![]() а пока извращаюсь таким кодом: |
|
|||||
|
Контрибьютор базы знаний по Флекс
Регистрация: Jul 2005
Адрес: Moldova, Rep. of
Сообщений: 569
|
GeeZeR, ну запутался ты, зачем это на форум писать, ты точно уверен, что подумав и почитав справку, та САМ не решишь проблему, а?
У людей же психика неустойчивой может оказаться, особенно после res = 10-(-inp); ![]() Советую задуматься ![]()
__________________
|
|
|||||
|
Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
|
Да это ж явный глюк, причём тут справка! Хотя... ща почитаю
ЗЫ: Мог бы и ответить если знаешь в чём тут трабл |
|
|||||
|
Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
|
Нды, действительно - чтение справки помогает
Боже, да кто же там у них в Макромедии додумался до такого идиотизма: res = 10-inp; - работает как надо, а для суммы нужно оказывается писать: res = 10+Number(inp); лыжники блин... |
|
|||||
|
Контрибьютор базы знаний по Флекс
Регистрация: Jul 2005
Адрес: Moldova, Rep. of
Сообщений: 569
|
у тебя и inp и res это String
а при работе с строками можно использовать оператор + с *не* строками, 10 например, это число. В этом случае результат будет String, строка сложенная из этих двух значений, как ты понимаешь отнимать так не получится, отрицательных строк не бывает, ясно? Я б сказал что надо делать с такими как ты, но боюсь ты так и не поймёшь почему тебя как минимум к компам пускать нельзя.
__________________
|
|
|||||
|
Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
|
Цитата:
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_. |
|
|||||
|
Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
|
Да никто никого не ругает, просто я пытаюсь порассуждать на эту тему. Мне лично кажется странным, что при сложении числовой константы и переменной содержащей число, в итоге получается строка! И не важно, что эта переменная была взята из поля типа Input Text. Флеш автоматически распознаёт типы данных - то же самое должен делать и в этом случае. То есть при вводе букв или букв с цифрами - Input Text должен определять эти данные как строку, а при вводе цифр - как числовые данные, что и происходит во всяком другом случае, кроме случая с полем типа Input Text. Это по моему логично, а уж если вам непременно захотелось из цифр сделать строку - ради Бога - делайте с помощью последующей обработки кода, а именно методом toString().
Понятно, что раз заведено так как есть - приходится следовать правилам, но мне они кажутся немного не логичными, о чём я, собственно, и высказываюсь. |
|
|||||
|
Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
|
В твоем случае переменная 'inp' содержит не число, а строку. Cвойство TextField.text ссылается на ту же самую переменную, а это свойство имеет тип String. Да и не удивительно, ведь то что ты вводишь в текстовое поле, ничто иное как строка, набор кода символов.
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_. |
|
|||||
|
Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
|
Но ведь когда присваиваются числовые данные какой-нибудь переменной на временнОй шкале - это ведь тоже по сути набор кода символов. И в том-то особенность Флеша и состоит, что он автоматически распознаёт к какому типу данных этот набор символов отнести. В случае с полем ввода данные передаются в такую же самую переменную - не лучше и не хуже других, поэтому и распознавание типа данных должно выполняться "на лету". Мы же в выражениях используем не само поле, где вся введённая информация - это простой набор символов, а мы используем ПЕРЕМЕННУЮ, которой был отдан этот набор, и которая обязана преобразовать этот набор в правильный тип данных - как и везде во Флеше, как и в примере типа:
а=5; Но этого преобразования не происходит, и вместо Флеша я сам должен указывать, что это числовые данные - несостыковка короче. Поэтому странно, что переменные поля ввода обрабатываются Флешем иначе чем все остальные. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:50. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|