PDA

Просмотр полной версии : Типы переменных


BlackShadow
19.02.2011, 12:15
Итак, такое дело. Создал программу для вычисления корреляций (что это такое - нет времени объяснять, да и проблема не в этом).
В начале программы я задал все значения переменных по типу:

var [переменная]:Number;

А в ходе вычислений я заметил, что так идет другой тип переменной - строка, потому что там идет такой процесс:

1) Присваиваю Х значение = 10
2) Присваиваю У значение = 10
3) Есть поле "Операция" ("rezult"), где возможны 4 значения: плюс, минус, делить, умножить (в это поле нужно вводить операцию: +, -, *, /)
4) Есть поле Dynamic Text "rezult", которое вначале = 0 (присвоено, как Number, равный 0)
5) При нажатии кнопки "RESULT", переменной rezult присваивается значение Х и У, между которыми происходит операция. Вот код кнопки:

on (release) {
txt = "";
if ((oper == "+") or (oper == "-") or (oper == "*") or (oper == "/")){
if ((a != "") and (b != "")){
switch (oper){
case "+":
rezult = a + b;
case "-":
rezult = a - b;
case "*":
rezult = a * b;
case "/":
rezult = a / b;
}
} else {
txt = "Не введены числа!";
}
} else {
txt = "Неверная операция!";
}
}


6) Вроде бы, код верный, а в поле rezult высвечивается такое значение rezult, будто он ДЕЛИТ (то есть rezult становится равным 1. Если Х и У равно 10 и 100, соответственно, то rezult = 0,1)

Вопрос: почему так происходит? Подскажите, что я не так делаю

dark256
19.02.2011, 12:19
Замените "or" на "||"

'a != ""' замените на !isNan(a)

У меня все работает :)

А. Тьфу. После каждого case и операции добавляйте break;

switch (oper)
{
case "+":
rezult = a + b;
break;
case "-":
rezult = a - b;
break;
case "*":
rezult = a * b;
break;
case "/":
rezult = a / b;
break;
}
trace( rezult )

BlackShadow
19.02.2011, 12:34
Спасибо большое, но теперь у меня другая проблема. При введении, например, 12 и 1 результат оказывается 121, а не 13... Походу, теперь он стал считать их строками... Может я опять что-то не так делаю?

dark256
19.02.2011, 12:43
Флэш плюет на типизацию при любом удобном случае.
Вставьте операнды в "Number()"

Number(a) + Number(b)

К сожалению вы привели лишь участок кода, поэтому судить сложно.
К слову, если вы берет данные из полей ввода, то там однозначно будет text.
Еще кстати - флэш совершенно безболезненно умеет делить на ноль :)
Так что ничему не удивляйтесь :)

BlackShadow
19.02.2011, 12:47
Флэш плюет на типизацию при любом удобном случае.
Вставьте операнды в "Number()"

Number(a) + Number(b)

К сожалению вы привели лишь участок кода, поэтому судить сложно.
К слову, если вы берет данные из полей ввода, то там однозначно будет text.
Еще кстати - флэш совершенно безболезненно умеет делить на ноль :)
Так что ничему не удивляйтесь :)

Ой :) Огромное спасибо Вам)) Очень выручили и помогли!)) Можно потом к Вам еще по одному вопросу обратиться?))

dark256
19.02.2011, 12:52
Ну.... собственно я тут самый тихий и незаметный из всех пользователей.
Пишите в форум, тут присутствуют гуру на несколько порядков покруче, чем ваш покорный слуга :)

BlackShadow
19.02.2011, 12:57
Да что Вы)) Какой слуга?)) Вы мне очень даже помогли)) Просто я разработчик формул во Flash, которые идут из курса физики за первый курс института)) и мне позарез нужно узнать, как построить графики, если у меня есть функция y = kx + b.. Вы бы не могли помочь с материалом по этой теме? просто я, бродя по поисовикам, ничего толком не нашел.. а у вас рука-то уже "набита" по таким сумасшедшим вопросам))

dark256
19.02.2011, 13:08
Нуууууу......... батенька....... собссно строим по точкам.
Которые соединяем линиями :)

var SUMDRAW = SUM.createEmptyMovieClip("SUMMARY",100);
SUMDRAW.lineStyle (1, 0x00AAAA,100);
SUMDRAW .beginFill(0x00AAAA,20);

SUMDRAW.moveTo ( x0, y0);
SUMDRAW.lineTo ( x1, y1);
и так далее по точкам графика

В целом.... можете полюбоваться на мой исходник... типа сумматор нескольких функций.
Можно полюбоваться кодом. Который ужасен. Ибо писано давно. Но посмотреть можно :)

BlackShadow
19.02.2011, 13:10
Извините, а в какой он сделан версии? У меня MF8... И он говорит, что не понимает формат((

dark256
19.02.2011, 13:10
А в целом, может быть, имеет смысл связаться с автором вот этого приложения.
Дать ему денег и сэкономить время :)
http://vkontakte.ru/app5435_43915359

dark256
19.02.2011, 13:13
О майн гатт..... Поставьте Adobe Flash CS3 хотя бы. Для кода это некритично, но удобств и фишек поболее.
Причем не заморачивайтесь на CS4 и CS5. Без толку. Дыма много толку мало :)

Вот экспорт в 8-й флэш

BlackShadow
19.02.2011, 13:13
:) хм... хорошая мысль)) учту))

BlackShadow
19.02.2011, 13:19
:mosking: хорошо))