Форум 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=74289)

Shyroop 16.01.2006 18:41

фиксация кнопок
 
есть три кнопки, нужно чтобы при нажатии одной - она фиксировалась, при нажатии другой все гасли, и фиксировалась нажатая. Вроде надо не кнопками ползоваться, а мувиками. Подскажите как, а то я не могу догнать... Пасиб! :)

Timerlan 16.01.2006 19:19

делаешь три мувика по два кадра в каждом( не фиксированная кнопка и фиксированная), в первый фрейме каждого мувика поставь stop();
далее допустим ты их назвал как mc1, mc2, mc3
mc1.onRelease=function(){
mc1.gotoAndStop(2);}

mc2.onRelease=function(){
mc2.gotoAndStop(2);
mc1._visible=false;
mc3._visible=false;
}

Shyroop 16.01.2006 19:30

Спасибо, а если их 100 то в каждой это прописывать??

Shyroop 16.01.2006 19:40

и еще в догонку если по этому принципу сделать onRollOver и onRollOut, то фиксация проподает, а хотелось бы, чтобы этот мувик вел себя как кнопка, + фиксация :)

Жень Шень 16.01.2006 19:59

Вложений: 1
Привет!
А так подойдет?

KPaul 16.01.2006 20:00

Если у них один родитель, я думаю самое просто это перебор.

Shyroop 16.01.2006 20:07

Цитата:

Сообщение от Жень Шень
Привет!
А так подойдет?

все классно, но как на ето еще присобачить RollOver и RollOut. к примеру, чтобы на RollOver в кнопке тоже мячик появлялся и соответственно на RollOut проподал, а при Release фиксировался... я этого добиться не могу
:confused:

nyctota 16.01.2006 21:13

Сударь, вы ленитесь.
Воспользуйтесь переменной-триггером.
Если радиокнопка включена, переменная равна 1: в обработчиках onRollOver, onRollOut проверяем переменную и в зависимости от её значения производим (или не производим) какие-то махинации.

Timerlan 16.01.2006 21:56

ну сделай ты мувики не с 2мя кадрами, а со столькими сколько тебе нужно чтобы перебрать все свои возможные положения кнопки. Или пользуйся управляющими переменными, как посоветовал nyctota.

Shyroop 17.01.2006 11:29

да я вот тригеррами и пробовал делать, но где-то ошибочка... подсажите где?

flag=0;

mc1.onRelease=function(){
col= new Color(mc1);
col.setRGB(0x000066);
flag=1;
}
mc1.onRollOver=function(){
if(flag == "0") {
col= new Color(mc1);
col.setRGB(0x000066);
}
}
mc1.onRollOut=function(){
if(flag == "0") {
col= new Color(mc1);
col.setRGB(0xff9900);
}
}

nyctota 17.01.2006 11:58

Используй тот код, что дал Жень Шень...
Далее не забудь, что переменная-триггер должна быть у каждой радиокнопки своя (ты же не хочешь их все сразу выключать?), типа
Код:

this.flag
Ну, и ессесно, ты должен при включении одной кнопки выключать все остальные, т.е. обнулять их триггеры.

serzhman 17.01.2006 12:54

Вложений: 1
А если так попробовать...

Shyroop 17.01.2006 13:16

в принципе да, но если кнопок 100, то сложновато!!
попробовал так, но не выходит:
Код HTML:

        this[i].onRelease = function() {
                for (j=1; j<=4; j++) {
                        this._parent[j].gotoAndStop(1+(this.n == j));
                        flagnew = "flag"+j;
                        this._parent[j].flagnew = (0+(this.n == j));
                        this._parent[j].col= new Color(this.n);
                    this._parent[j].col.setRGB(0xff9900);
                        trace(this._parent[j].flagnew);
                       
                }
        };
       
        this[i].onRollOver = function() {
                for (j=1; j<=4; j++) {
                        flagnew = "flag"+j;
                        this._parent[j].flagnew = 0;
                        //trace(this._parent[j].flagnew);
                        if(this._parent[j].flagnew = 0) {
                        this._parent[j].col= new Color(this.n);
                    this._parent[j].col.setRGB(0xff9900);
                        } else {
                                this._parent[j].col= new Color(this.n);
                    this._parent[j].col.setRGB(0xff9900);
                        }
                }
        };
       
       
        this[i].onRollOut = function() {
                for (j=1; j<=4; j++) {
                        flagnew = "flag"+j;
                        this._parent[j].flagnew = 0;
                        if(this._parent[j].flagnew == 0) {
                        this._parent[j].col= new Color(this.n);
                      this._parent[j].col.setRGB(0x000066);
                        } else {
                    this._parent[j].col= new Color(this.n);
                    this._parent[j].col.setRGB(0xff9900);
                        }
                }
        };
       
       
}


nyctota 17.01.2006 13:38

Алгоритм.

1. Событие onRelease():
-- ВСЕ кнопки возвращаем в состояние "notRelease"
-- задаем ВСЕМ кнопкам триггер = 0;
-- текущую кнопку переводим в состояние "Release"
-- текущей кнопке задаем триггер = 1;

2. Событие onRollOver():
-- проверяем триггер текущей кнопки и, если он равен 1, текущую кнопку переводим в состояние "RollOver", в противном случае -- ничего не делаем;

2. Событие onRollOut():
-- проверяем триггер текущей кнопки и, если он равен 1, текущую кнопку переводим в состояние "RollOut", в противном случае -- ничего не делаем;

Shyroop 17.01.2006 14:43

а можно по подробнее по привиденному листингу, а то я что-то не могу разобраться. спасибо!

nyctota 17.01.2006 15:25

Что тебе не понятно? Если всё, то, уж прости, на то есть книжки и хэлп, если что-то конкретное -- спрашивай.

Жень Шень 17.01.2006 17:05

Вложений: 1
Привет!
ТАК?

Жень Шень 17.01.2006 20:21

Вложений: 1
Да, поспешил - конец рабочего дня.
Вот исправленный вариант.

Shyroop 18.01.2006 16:16

да, большое спасибо! это именно то что мне надо!!!


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

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