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

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

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

Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
Thumbs down Глючит Input Text

В общем такая проблема: создаю простой мувик с текстовым полем типа Input Text, затем поле Dynamic Text и кнопка.
В окошке Var: поля Input Text ввожу переменную "inp", тоже самое и для Dynamic Text - переменная "res".

В кнопке пишу код:
Код:
on (press) {
	res = 10+inp;
}
Создаю swf, в поле для ввода пишу 5. Казалось бы результат должен быть 15, а нифига! Результат такой: 105 ! Как буд-то бы это строчные данные, то есть "10"+inp (код
Код:
on (press) {
	res = "10"+inp;
}
выдал тот же результат: 105).

Ладно, меняю res = 10+inp; на res = 10-inp;, создаю swf, снова ввожу 5 и получаю ожидаемую разницу: 5 !
То есть при суммировании либо 10 воспринимается как строковый тип данных, то ли содержимое переменной inp, а при вычитании всё нормально. В общем прилагаю файл, сам не знаю чё и думать
а пока извращаюсь таким кодом:
Код:
on (press) {
	res = 10-(-inp);
}
Вложения
Тип файла: rar Лыжи.rar (19.0 Кб, 61 просмотров)

Старый 18.03.2006, 01:58
Den0k вне форума Посмотреть профиль Отправить личное сообщение для Den0k Найти все сообщения от Den0k
  № 2  
Ответить с цитированием
Den0k
Контрибьютор базы знаний по Флекс
 
Аватар для Den0k

Регистрация: Jul 2005
Адрес: Moldova, Rep. of
Сообщений: 569
GeeZeR, ну запутался ты, зачем это на форум писать, ты точно уверен, что подумав и почитав справку, та САМ не решишь проблему, а?

У людей же психика неустойчивой может оказаться, особенно после res = 10-(-inp);
Советую задуматься
__________________


Старый 18.03.2006, 02:29
GeeZeR вне форума Посмотреть профиль Отправить личное сообщение для GeeZeR Найти все сообщения от GeeZeR
  № 3  
Ответить с цитированием
GeeZeR

Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
Да это ж явный глюк, причём тут справка! Хотя... ща почитаю
ЗЫ: Мог бы и ответить если знаешь в чём тут трабл

Старый 18.03.2006, 02:52
GeeZeR вне форума Посмотреть профиль Отправить личное сообщение для GeeZeR Найти все сообщения от GeeZeR
  № 4  
Ответить с цитированием
GeeZeR

Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
Нды, действительно - чтение справки помогает
Боже, да кто же там у них в Макромедии додумался до такого идиотизма:
res = 10-inp; - работает как надо, а для суммы нужно оказывается писать:
res = 10+Number(inp);
лыжники блин...

Старый 18.03.2006, 03:23
Den0k вне форума Посмотреть профиль Отправить личное сообщение для Den0k Найти все сообщения от Den0k
  № 5  
Ответить с цитированием
Den0k
Контрибьютор базы знаний по Флекс
 
Аватар для Den0k

Регистрация: Jul 2005
Адрес: Moldova, Rep. of
Сообщений: 569
у тебя и inp и res это String
а при работе с строками можно использовать оператор + с *не* строками, 10 например, это число. В этом случае результат будет String, строка сложенная из этих двух значений, как ты понимаешь отнимать так не получится, отрицательных строк не бывает, ясно?

Я б сказал что надо делать с такими как ты, но боюсь ты так и не поймёшь почему тебя как минимум к компам пускать нельзя.
__________________


Старый 18.03.2006, 15:34
GeeZeR вне форума Посмотреть профиль Отправить личное сообщение для GeeZeR Найти все сообщения от GeeZeR
  № 6  
Ответить с цитированием
GeeZeR

Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
Цитата:
Сообщение от Den0k
у тебя и inp и res это String
а при работе с строками можно использовать оператор + с *не* строками, 10 например, это число. В этом случае результат будет String, строка сложенная из этих двух значений, как ты понимаешь отнимать так не получится, отрицательных строк не бывает, ясно?
Ясно, я в курсе что такое конкатенация и автоматическое приведение к типу, когда в выражении вместе с числовыми встречаются и строковые данные. Но ответь мне как же тогда относиться к словам, что мол Флеш автоматически распознаёт тот или иной тип данных? Почему это по умолчанию всё, что ни вводится в поле ввода объявляется строкой? По какой такой причине? У поля ввода есть нормальная переменная, такая же как и все остальные, и тип данных в ней ТОЖЕ обязан распознаваться автоматически. Я не понимаю логики разработчиков, если запись типа число + переменная содержащая число по их мнению является желанием флешера соединить два текстовых поля (!!?)! Тебе не кажется это странным? В конце концов зачем тогда существует такая вещь как "приведение к типу"? Мне кажется переменная поля ввода должна себя вести так, как и все остальные переменные во Флеше, а уж метод toString() я и сам смогу применить когда нужно.

Цитата:
Сообщение от Den0k
Я б сказал что надо делать с такими как ты, но боюсь ты так и не поймёшь почему тебя как минимум к компам пускать нельзя.
ЛОЛ, Я б сказал, что тебе нужно делать, но не буду опускаться до хамства как ты. Во всяком случае судя по твоей наглости и времени создания твоего поста - скажу, что тебе нужно спать по ночам, чтобы выспаться и иметь хорошее настроение, а не бродить по форумам, к которым, к слову, тебя подпускать вообще нет смысла.

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

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Цитата:
Почему это по умолчанию всё, что ни вводится в поле ввода объявляется строкой? По какой такой причине? У поля ввода есть нормальная переменная, такая же как и все остальные, и тип данных в ней ТОЖЕ обязан распознаваться автоматически. Я не понимаю логики разработчиков, если запись типа число + переменная содержащая число по их мнению является желанием флешера соединить два текстовых поля (!!?)!
Для преобразования типов есть определенные правила, и их необходимо знать!!! А не возмущаться. При попытке сложения (+) строки и числа, число автоматически преобразуется в строку, и не важно какой переменной ты присваиваешь результат. Если тебе надо сложить числа, то есть оператор Number(). Вот если мне надо текстовому полю присвоить сумму двух строк, что я должен ругать разработчиков за то, что они меня заставляют лишний раз писать toString()?
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

Старый 18.03.2006, 17:25
GeeZeR вне форума Посмотреть профиль Отправить личное сообщение для GeeZeR Найти все сообщения от GeeZeR
  № 8  
Ответить с цитированием
GeeZeR

Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
Да никто никого не ругает, просто я пытаюсь порассуждать на эту тему. Мне лично кажется странным, что при сложении числовой константы и переменной содержащей число, в итоге получается строка! И не важно, что эта переменная была взята из поля типа Input Text. Флеш автоматически распознаёт типы данных - то же самое должен делать и в этом случае. То есть при вводе букв или букв с цифрами - Input Text должен определять эти данные как строку, а при вводе цифр - как числовые данные, что и происходит во всяком другом случае, кроме случая с полем типа Input Text. Это по моему логично, а уж если вам непременно захотелось из цифр сделать строку - ради Бога - делайте с помощью последующей обработки кода, а именно методом toString().
Понятно, что раз заведено так как есть - приходится следовать правилам, но мне они кажутся немного не логичными, о чём я, собственно, и высказываюсь.

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

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
В твоем случае переменная 'inp' содержит не число, а строку. Cвойство TextField.text ссылается на ту же самую переменную, а это свойство имеет тип String. Да и не удивительно, ведь то что ты вводишь в текстовое поле, ничто иное как строка, набор кода символов.
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

Старый 18.03.2006, 18:04
GeeZeR вне форума Посмотреть профиль Отправить личное сообщение для GeeZeR Найти все сообщения от GeeZeR
  № 10  
Ответить с цитированием
GeeZeR

Регистрация: May 2001
Адрес: Украина, г. Киев
Сообщений: 28
Но ведь когда присваиваются числовые данные какой-нибудь переменной на временнОй шкале - это ведь тоже по сути набор кода символов. И в том-то особенность Флеша и состоит, что он автоматически распознаёт к какому типу данных этот набор символов отнести. В случае с полем ввода данные передаются в такую же самую переменную - не лучше и не хуже других, поэтому и распознавание типа данных должно выполняться "на лету". Мы же в выражениях используем не само поле, где вся введённая информация - это простой набор символов, а мы используем ПЕРЕМЕННУЮ, которой был отдан этот набор, и которая обязана преобразовать этот набор в правильный тип данных - как и везде во Флеше, как и в примере типа:
а=5;
Но этого преобразования не происходит, и вместо Флеша я сам должен указывать, что это числовые данные - несостыковка короче. Поэтому странно, что переменные поля ввода обрабатываются Флешем иначе чем все остальные.

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

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

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


 


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


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