PDA

Просмотр полной версии : Ввод цифр в Input text field


MutantOS
25.02.2007, 22:16
Есть поле, в которое нужно вводить цифры. рядом 2 кнопки "+" и "-".
На них назначены события:
на "-":
on (press) {
if (p > 1)) {
p--;
} else {
p=1;
}
}
на "+":
on (press) {
p++;
}
Если не вводить цифры, то кнопки "+" и "-" работают. Если ввести число с клавиатуры и попытаться его увеличить или уменьшить - пишет NaN. Если с клавиатуры ввести тоже самое число, что было - все ок.

Просьба помочь :)

Snut
25.02.2007, 22:32
Во первых Код оформи как код, а дальше я подскажу надеюсь)

etc
25.02.2007, 22:34
MutantOS, приведи свой код в надлежащий вид.

MutantOS
25.02.2007, 22:35
вот :rolleyes:

Snut
25.02.2007, 22:39
ну так преобразуй ты ее в Number. NaN означает not a number т.к. то что вводится в строку есть стринг если я все правильно понимаю.

MutantOS
25.02.2007, 22:45
на "-":
on (press) {
if (Number(p > 1)) {
p = (Number(p)-1);
} else {
p=1;
}
}

on (press) {
p = (Number(p)+1);
}

Сделал так. Теперь при нажатии на "+" цифра исчезает. Если на "-" -- становится равно 3.

etc
25.02.2007, 22:53
Со скобками бардак.
if (Number(p) > 1) {

MutantOS
25.02.2007, 23:06
Ваша правда.
Поправил:

on (press) {
if (Number(p) > 1) {
p = (Number(p)-1);
} else {
p=1;
}
}


Не работает.

etc
25.02.2007, 23:12
Выкладывай исходник.

MutantOS
25.02.2007, 23:27
Вот исходник.

Snut
26.02.2007, 01:37
В главном фрейме:


var p:Number = 3;


На "-"


on (release) {
if (p > 0) {
p = (p)-1;
} else {
p = 0;
}
}


На "+"


on (release) {
p++;
}


И все нормально функционирует, мож я недопонимаю задачу?

Mr. Fixit
26.02.2007, 01:58
а не легче все в один кадр?
var p:Number = 3;
p_str_down.onPress = function () {
if (p == 0) {
p = 0;
} else {
p -= 1;
}
};
p_str_up.onPress = function () {
p += 1;
};

Snut
26.02.2007, 02:08
ну или так) ток имена кнопочкам придать и все ок)

udaaff
26.02.2007, 02:14
а мне так больше нравиться :)
//начальное значение
x = -3;
p = x;
//
p_str_down.onRelease = function() {
x --;
p = x
};
//
p_str_up.onRelease = function() {
x ++;
p = x;
};

Mr. Fixit
26.02.2007, 03:03
а не легче так:

number = 0;
up_btn.onPress = function () {
num.text = ++number;
};
down_btn.onPress = function () {
num.text = --number;
};

MutantOS
26.02.2007, 12:05
var p_str:Number = 4;

p_str_down.onRelease = function () {
if (p_str > 3) {
p_str -= 1;
} else {
p_str = 3;
}
};
p_str_up.onRelease = function () {
p_str += 1;
};
Теперь при вводе с клавиатуры например числа 6 и нажатии на плюс получается 61 :(

etc
26.02.2007, 12:08
Ну опять же, числа со строками складываете.
А вообще забавно видеть переменную p_str («_str» — String) с объявленным типом Number. То, что у неё задан тип Number, вовсе не значит, что он будет таковым, чтобы туда не присваивали.

Mr. Fixit
26.02.2007, 12:17
2MutantOS: а ты что хотел?

var p_str:Number = 4;
p_str_down.onRelease = function () {
if (p_str>3) {
p_str -= 1;
} else {
p_str = 3;
}
str.text = p_str;
};
p_str_up.onRelease = function () {
p_str += 1;
str.text = p_str;
};

MutantOS
26.02.2007, 12:24
2Mr. Fixit:
Хотелось бы, чтобы при наборе скажем 20 и нажатии потом на + или - цифра увеличивалсь или уменьшалась :)

MutantOS
26.02.2007, 12:50
2__etc:
изменил переменную на p_p, не помогло.

etc
26.02.2007, 12:55
И не поможет. Название переменной просто не отражает сути, оно никак не влияет на работоспособность.
Может, стоит все-таки понять тот код, который тебе пишут?

MutantOS
26.02.2007, 13:32
2__etc:
Вы говорите о складывании строки с числом? Моих знаний пока недостаточно, чтобы избежать этой проблемы. Поэтому я и прошу помощи. Весь код, который мне пишут я анализирую и пытаюсь применить. Ответа, который бы у меня заработал - пока нет.

Пока есть строка, в которую добавляестя число.

Вопрос: если в свойствах поля выбрать Embed и присвоить Numerals - это не будет означать, что переменная в этом поле - цифра? или это только ограничивает ввод?

Mr. Fixit
26.02.2007, 14:16
down.onRelease = function () {
--str.text;
};
up.onRelease = function () {
++str.text;
};

udaaff
26.02.2007, 14:22
2 Mr. Fixit
мне кажется, что лучше все таки оперировать с числами, а результат отображать в текстфилде

Mr. Fixit
26.02.2007, 14:38
2udaaff:
я написал код, который соответствует запросам MutantOS.

MutantOS
26.02.2007, 14:57
2Mr. Fixit:
Говорит:
There is no property with the name 'text'. ++p.text;
There is no property with the name 'text'. --p.text;

2Mr. Fixit, 2udaaff:

Далее выбранное число будет использоваться как число.
Можно ли сделать именно так, как было написано udaaff?
Отображаться дожно в текстовом поле число, при этом переменная за него отвечающая была числом :)

Mr. Fixit
26.02.2007, 14:59
ты введи свой "р" в инстанс текстфилда, а не в "var"

MutantOS
26.02.2007, 15:11
Ввел в интстанс, убрал из вар - выдает ту же ошибку.

Mr. Fixit
26.02.2007, 15:34
у тебя какой Flash?
вот сделал, я доволен...

var num:Number = 0;
num_txt.text = num;
up.onPress = function () {
num = Number (num_txt.text);
num += 1;
num_txt.text = num;
};
down.onPress = function () {
num = Number (num_txt.text);
num -= 1;
num_txt.text = num;
};

MutantOS
26.02.2007, 16:02
2Mr. Fixit:
Macromedia Flash Professional 8.

Щя попробую, жаль без исходника :(

MutantOS
26.02.2007, 16:19
2Mr. Fixit:
Не получается, можно исходник? :)

Mr. Fixit
26.02.2007, 16:22
ну.. как?

etc
26.02.2007, 16:47
Вопрос: если в свойствах поля выбрать Embed и присвоить Numerals - это не будет означать, что переменная в этом поле - цифра? или это только ограничивает ввод?
Нет, за ограничение ввода отвечает свойство restrict.

MutantOS
26.02.2007, 17:17
2Mr. Fixit:
Спасибо большое. Ошибка была в неверном расположении строк. Вроде все правильно, а не работало.

2All:
Спасибо за помощь.

Задача решена :)

udaaff
27.02.2007, 00:44
сколько программистов, столько и решений одной и той же задачи)

Mr. Fixit
27.02.2007, 01:02
я воздержусь