Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Фильтровать действия при нажатии одной кнопки (http://www.flasher.ru/forum/showthread.php?t=117239)

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)


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

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