PDA

Просмотр полной версии : Фильтровать действия при нажатии одной кнопки


KiL33
22.10.2008, 16:09
Есть 3 кнопки RadioButton выполняющие определенные функции. И кнопка “готово”, анализирующая, при нажатии, какой выбран RadioButton.

Код для RadioButton
for (i=0; i<3; i++) {
_root.main.stick["q"+i].onPress = function() {
switch (Number(this._name.substr(-1))) {
case 0 :
…действие
_root.btn = true;
_root.btn2 = false;
_root.btn3 = false;
break;
case 1 :
…действие
_root.btn2 = true;
_root.btn = false;
_root.btn3 = false;
break;
case 2 :
…действие
_root.btn3 = true;
_root.btn2 = false;
_root.btn = false;
break;
}
};
}

Код кнопки ”готово”
on (release) {
if (_root.btn) {
…действие
}
if (_root.btn2) {
… действие
}
if (_root.btn3) {
… действие
}
}
То есть суть вопроса, надеюсь, ясна. При нажатии на кнопку “готово” не должно происходить не нужных действий. Для этого я тупо делаю так if (_root.btn) . При этом постоянно приходится писать _root.btn = true; либо _root.btn = false; дабы не вызывать не нужную мне функцию.

Может быть, всё это можно как-то упростить???
Потому как 3 действия таким макаром написать одно, а если 10!)

AlexCooper
22.10.2008, 17:01
myonPress = function(id:Number)
{
switch (id)
{
case 0:
// job
break;
case 1:
// job
break;
case 2:
// job
break;
case 3:
// job
break;
default: trace('Где ты нашёл эту кнопку???');
}
}

var n:Number=3;

for (var i=0; i<=n; i++)
{
_root.main.stick["q"+i].onPress = function()
{
for (i=0; i<=n; i++) _root['btn'+i] = false;
_root['btn'+Number(this._name.substr(-1))] = true;
myonPress(Number(this._name.substr(-1)));
};
}
так же можно сделать и с релейсом

KiL33
22.10.2008, 18:43
Спасибо, Вы спасли мою и без того шаткую психику!)):victory:

AlexCooper
22.10.2008, 19:14
Пожалуйста, только
n = Const

UPD: кстати, создавать на каждое действие флажки тоже както не по последним словам оптимизации. Горозда проще объявить 1 переменную которая и будет хранить ID действия, например:
myonPress = function(id:Number)
{
switch (id)
{
case 0:
// job
break;
case 1:
// job
break;
case 2:
// job
break;
case 3:
// job
break;
default: trace('Где ты нашёл эту кнопку???');
}
}

var n:Number=3;
var ID:Number=-1; // Что б преждевременно ничего сработало

for (var i=0; i<=n; i++)
{
_root.main.stick["q"+i].onPress = function()
{
ID=Number(this._name.substr(-1));
myonPress(ID);
};
}

а тут еще проще

on (release)
{
switch (ID)
{
case 0:
// job
break;
................
case 3:
// job
break;
}
}
если же запись имеет смысл (тоесть выполняються различные действия при onPress / onRelease)