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

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

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

Регистрация: Jan 2006
Сообщений: 5
Отправить сообщение для Scorpio29 с помощью ICQ
По умолчанию помогите сделать простейшее вычисление

дело в том, что вообще не получается сложить 2 числа. Поясню. Делаю поле ввода и обзываю его x, затем делаю поле вывода и называю его y, далее делаю кнопку и на ней делаю скрипт:
Код:
on (keyPress "<Enter>") {
	a=Number(x);
	b=Number(30);
	y=a+b;
}
в итоге выводит NaN
пробовал и так
Код:
on (release, keyPress "<Enter>") {
		var b = 30;
		var y = Number(x) + b;
}
уже неделю не могу вывести в динамическое поле результат простейшего вычисления... все хелпы наизусть знаю... Что я не так делаю? Подскажите, пожалуйста, а то уже мозг взрывается...


Последний раз редактировалось Scorpio29; 27.05.2011 в 01:17.
Старый 27.05.2011, 01:40
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
var b:Number = 30;
Key.addListener(this);
 
function onKeyDown():Void
{
	 if (Key.isDown(Key.ENTER))
		tf2.text = parseInt(tf1.text) + b;
}

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

Регистрация: Jan 2006
Сообщений: 5
Отправить сообщение для Scorpio29 с помощью ICQ
что-то вообще не понял где что... не ужели просто нельзя 2+2 сложить во флэшке?

Старый 27.05.2011, 18:36
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Код AS1/AS2:
trace(2 + 2);
Если вы "обозвали" поле "x", то нужно получить строку, в нем содержащуюся:
Код AS1/AS2:
x.text
У поля кроме этого свойства (text) есть еще целая куча.
Кроме того, надеюсь, что вы понимаете, что для именования поля нужно вводить желаемое инстанс-имя в соотв. поле его свойств.

А потом преобразовать строку в число, чтобы его можно было было использовать в математических вычислениях.
Код AS1/AS2:
parseInt(x.text);
Ну и все вместе, и вывод результата:
Код AS1/AS2:
y.text = parseInt(x.text) + b;
Код записываете в кадре, а не на кнопке.
К чему кнопка, если у вас желаемое действие должно производиться по нажатию на ENTER?

PS. На объектах код писать вообще не надо под страхом иметь кучу проблем и вообще отстать от жизни.
__________________
Идите первым!


Последний раз редактировалось mooncar; 27.05.2011 в 18:48.
Старый 28.05.2011, 12:16
Scorpio29 вне форума Посмотреть профиль Отправить личное сообщение для Scorpio29 Найти все сообщения от Scorpio29
  № 5  
Ответить с цитированием
Scorpio29
 
Аватар для Scorpio29

Регистрация: Jan 2006
Сообщений: 5
Отправить сообщение для Scorpio29 с помощью ICQ
огромное спасибо за пояснения!!! до сих пор не могу найти нормальную книгу по описанию AS, так что я уже отстал от жизни ))))

И все равно не работает... и первый скрипт и второй. Первый скрипт (y=поле вывода, x=поле ввода)
Код:
var b:Number = 30;
Key.addListener(this);
 
function onKeyDown():Void
{
	 if (Key.isDown(Key.ENTER))
		y.text = parseInt(y.text) + b;
}
прописываю в кадре в итоге ничего не выводится. раньше хоть NaN писалось ))

второй же скрипт
Код:
y.text = parseInt(x.text) + b;
уж извините, но не очень силен в AS и не знаю как прописать его в кадре правильно. Пришлось вешать на кнопку. Результат тот же - ничего не отображается в поле Y

ps сделал трассеровку типа переменных x и y и трассеровку значений
Код:
trace(typeof(x));
trace(typeof(y));
trace(x);
trace(y);
и вот это показывает в окне трассеровки:

Код:
string
string
<TEXTFORMAT INDENT="0" LEADING="2"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="18" COLOR="#000000" LETTERSPACING="0" KERNING="0">3</FONT></P></TEXTFORMAT>
<p align="left"></p>


Последний раз редактировалось Scorpio29; 28.05.2011 в 13:31.
Старый 28.05.2011, 14:17
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
1. Уберите вообще кнопку на проекте и не пишите на ней ничего, она и не нужна.
2. Почему не работает, скорее всего, судя по вашей последней трассировке.
Похоже вы не задали имена полям. Вы задали переменные в поле var, связанные с полем.
Удалите там x и y в полях и не используйте это поле никогда.
Нужно задать имя поля на сцене, найдите в свойствах поля строку Instance Name, и введите там ваши x и y. Это и будут имена полей.

И да,
Код AS1/AS2:
y.text = parseInt(x.text) + b;
- это не "второй скрипт", это составная часть целого:
Код AS1/AS2:
var b:Number = 30;
Key.addListener(this);
 
function onKeyDown():Void
{
	 if (Key.isDown(Key.ENTER))
		y.text = parseInt(x.text) + b;
}
Просто udaaff использовал другие имена в своем примере, то что у вас x и y, у него tf1 и tf2.
Назовите поля так же, использовать x и y не хорошо.
__________________
Идите первым!


Последний раз редактировалось mooncar; 28.05.2011 в 16:02.
Старый 28.05.2011, 16:46
Scorpio29 вне форума Посмотреть профиль Отправить личное сообщение для Scorpio29 Найти все сообщения от Scorpio29
  № 7  
Ответить с цитированием
Scorpio29
 
Аватар для Scorpio29

Регистрация: Jan 2006
Сообщений: 5
Отправить сообщение для Scorpio29 с помощью ICQ
mooncar, еще раз большое спасибо за терпение... бьюсь головой об стенку просто... я действительно поставил название поля в var вместо instance, давно за флэхой не сидел. УРА УРА - все получилось. Но к почему-то только 1 раз могу ввести значение. А по задумке нужно вводить в это поле разные числа и видеть результат сразу. Формула будет сложнее.. просто хотелось разобраться с выводом результата. Но я уже понял откуда ошибка идет, поэтому последняя просьба, не подскажите какую-нибудь обучалку AS?

В итоге все-таки реализовал кнопку. Задача была такая, что бы пользователь введя свою цифру получил результат по формуле число_пользователя*31 + 25%
на кнопку повесил скрипт
Код:
on (release, keyPress "<Enter>") {
	a=31;
	b=0.25;
	c = parseFloat(x.text)*a;
	d = parseFloat(x.text)*a*b;
	y.text = c+d;
	
	}
использовал float, так как предыдущий вариант с parseInt отсекал только целое число
В этом случае можно считать в одном остановленном кадре разные пользовательские числа
Я понимаю что кривовато реализовано, но работает!!!
Единственный косяк - если пишется значение с запятой, а не с точкой - 2,99 - то после запятой все отсекается... а после точки норма...
Всем огромное спасибо за помощь и тычки в нужном направлении.


Последний раз редактировалось Scorpio29; 29.05.2011 в 02:05.
Создать новую тему Ответ Часовой пояс GMT +4, время: 15:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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