Вход

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


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
Привет!
А так подойдет?

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
А если так попробовать...

Shyroop
17.01.2006, 13:16
в принципе да, но если кнопок 100, то сложновато!!
попробовал так, но не выходит:

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
Привет!
ТАК?

Жень Шень
17.01.2006, 20:21
Да, поспешил - конец рабочего дня.
Вот исправленный вариант.

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