![]() |
Глючит Input Text
Вложений: 1
В общем такая проблема: создаю простой мувик с текстовым полем типа Input Text, затем поле Dynamic Text и кнопка.
В окошке Var: поля Input Text ввожу переменную "inp", тоже самое и для Dynamic Text - переменная "res". В кнопке пишу код: Код:
on (press) {Код:
on (press) {Ладно, меняю res = 10+inp; на res = 10-inp;, создаю swf, снова ввожу 5 и получаю ожидаемую разницу: 5 ! То есть при суммировании либо 10 воспринимается как строковый тип данных, то ли содержимое переменной inp, а при вычитании всё нормально. В общем прилагаю файл, сам не знаю чё и думать :confused: а пока извращаюсь таким кодом: Код:
on (press) { |
GeeZeR, ну запутался ты, зачем это на форум писать, ты точно уверен, что подумав и почитав справку, та САМ не решишь проблему, а?
У людей же психика неустойчивой может оказаться, особенно после res = 10-(-inp); :mad: Советую задуматься:rolleyes: |
Да это ж явный глюк, причём тут справка! Хотя... ща почитаю
ЗЫ: Мог бы и ответить если знаешь в чём тут трабл |
Нды, действительно - чтение справки помогает :eek:
Боже, да кто же там у них в Макромедии додумался до такого идиотизма: res = 10-inp; - работает как надо, а для суммы нужно оказывается писать: res = 10+Number(inp); лыжники блин... |
у тебя и inp и res это String
а при работе с строками можно использовать оператор + с *не* строками, 10 например, это число. В этом случае результат будет String, строка сложенная из этих двух значений, как ты понимаешь отнимать так не получится, отрицательных строк не бывает, ясно? Я б сказал что надо делать с такими как ты, но боюсь ты так и не поймёшь почему тебя как минимум к компам пускать нельзя. |
Цитата:
Цитата:
|
Цитата:
|
Да никто никого не ругает, просто я пытаюсь порассуждать на эту тему. Мне лично кажется странным, что при сложении числовой константы и переменной содержащей число, в итоге получается строка! И не важно, что эта переменная была взята из поля типа Input Text. Флеш автоматически распознаёт типы данных - то же самое должен делать и в этом случае. То есть при вводе букв или букв с цифрами - Input Text должен определять эти данные как строку, а при вводе цифр - как числовые данные, что и происходит во всяком другом случае, кроме случая с полем типа Input Text. Это по моему логично, а уж если вам непременно захотелось из цифр сделать строку - ради Бога - делайте с помощью последующей обработки кода, а именно методом toString().
Понятно, что раз заведено так как есть - приходится следовать правилам, но мне они кажутся немного не логичными, о чём я, собственно, и высказываюсь. |
В твоем случае переменная 'inp' содержит не число, а строку. Cвойство TextField.text ссылается на ту же самую переменную, а это свойство имеет тип String. Да и не удивительно, ведь то что ты вводишь в текстовое поле, ничто иное как строка, набор кода символов.
|
Но ведь когда присваиваются числовые данные какой-нибудь переменной на временнОй шкале - это ведь тоже по сути набор кода символов. И в том-то особенность Флеша и состоит, что он автоматически распознаёт к какому типу данных этот набор символов отнести. В случае с полем ввода данные передаются в такую же самую переменную - не лучше и не хуже других, поэтому и распознавание типа данных должно выполняться "на лету". Мы же в выражениях используем не само поле, где вся введённая информация - это простой набор символов, а мы используем ПЕРЕМЕННУЮ, которой был отдан этот набор, и которая обязана преобразовать этот набор в правильный тип данных - как и везде во Флеше, как и в примере типа:
а=5; Но этого преобразования не происходит, и вместо Флеша я сам должен указывать, что это числовые данные - несостыковка короче. Поэтому странно, что переменные поля ввода обрабатываются Флешем иначе чем все остальные. |
| Часовой пояс GMT +4, время: 11:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.