PDA

Просмотр полной версии : Проверка состояний кнопок и управление ими.


Punk T-34
07.01.2008, 07:13
Ещё один вопросик за сегодня...
Есть у меня 4 кнопки (rout25, rout28, rout29, rout30) и одна галочка (check).
Задача 1: Проверять, если нажаты все кнопки (они анимированные и с флагами), то нужно повесить галочку (check.gotoAndStop(2);). Если хотя-бы одна кнопка выключается - снимать галочку (check.gotoAndStop(1);).
Задача 2: Если поставить галочку, то включатся все кнопки и наоборот.
Вроде просто, вроде, даже код написал, но не работает :(

Вот, как я делал:

// Тут я задаю начальные состояния флагов.
Rout25On = false;
Rout28On = false;
Rout29On = false;
Rout30On = false;
// Здесь проверка: если, хотя-бы одна кнопка не нажата - снимаем галочку.
if ((Rout25On == false) || (Rout28On == false) || (Rout29On == false) || (Rout30On == false)) {
check.gotoAndStop(1);
};
// Здесь проверяем, все ли кнопки нажаты, если да, то ставим галочку.
if ((Rout25On == true) && (Rout28On == true) && (Rout29On == true) && (Rout30On == true)) {
check.gotoAndStop(2);
};
// Управление кнопками
rout25.onRelease = function() {
if (Rout25On == false) {
rout25.gotoAndPlay(2);
Rout25On = true;
} else {
rout25.gotoAndPlay(16);
Rout25On = false;
}
};
rout28.onRelease = function() {
if (Rout28On == false) {
rout28.gotoAndPlay(2);
Rout28On = true;
} else {
rout28.gotoAndPlay(16);
Rout28On = false;
}
};
rout29.onRelease = function() {
if (Rout29On == false) {
rout29.gotoAndPlay(2);
Rout29On = true;
} else {
rout29.gotoAndPlay(16);
Rout29On = false;
}
};
rout30.onRelease = function() {
if (Rout30On == false) {
rout30.gotoAndPlay(2);
Rout30On = true;
} else {
rout30.gotoAndPlay(16);
Rout30On = false;
}
};
/*А здесь, если ставим галочку, включаются все не нажатые кнопки, а нажатые остаются нетронутыми.*/
check.onPress = function() {
if ((Rout25On == false) || (Rout28On == false) || (Rout29On == false) || (Rout30On == false)) {
check.gotoAndStop(2);
rout25.gotoAndPlay(2);
rout28.gotoAndPlay(2);
rout29.gotoAndPlay(2);
rout30.gotoAndPlay(2);
Rout25On = true;
Rout28On = true;
Rout29On = true;
Rout30On = true;
} else {
check.gotoAndStop(1);
rout25.gotoAndPlay(16);
rout28.gotoAndPlay(16);
rout29.gotoAndPlay(16);
rout30.gotoAndPlay(16);
Rout25On = false;
Rout28On = false;
Rout29On = false;
Rout30On = false;
}
};

MrPoma
07.01.2008, 07:48
код верный. что конкретно не получется? попробуйте воспользоваться trace(). если не получится выложите исходник

Punk T-34
07.01.2008, 17:33
Если конкретно, то галочка не реагирует на включение и выключение кнопок. Если включить все кнопки, то гаочка не ставится. И, соответственно, если выключить хотя-бы одну кнопку - галочка не снимается.
Вобщем, я приложил исходник:
18633

Punk T-34
08.01.2008, 15:50
Может это как-то через глобальные переменные можно сделать?

udaaff
08.01.2008, 18:54
Вам нужно проверять состояние кнопок, каждый раз, при нажатии. А у вас проверки выполняются всего один раз.

Punk T-34
08.01.2008, 23:05
Но тут же я это и указываю, то есть, проверяю: для каждого onRelease свой if () { } else {};
Или что-то другое подразумевается?

udaaff
09.01.2008, 10:15
Подразумеваются первые два if в вашем коде.