![]() |
|
||||||||||
|
|
|
|||||
|
Guest
Сообщений: n/a
|
Есть к примеру 30 переключателей, которые представляют собой мувиклип из двух кадров: в первом кадре кнопка перехода на второй кадр, во втором кадре кнопка перехода на первый. И есть некий мувик, который должен не проигрываться если не один из переключателей не включен (2-й кадр), а если один и более включено - мувик должен играть.
Как лучше организовать такое? |
|
|||||
|
На кнопе
1 кадр on (release) { _root.ok+=1; } 2 кадр on (release) { _root.ok-=1; } На муве onClipEvent (enterFrame) { if (_root.ok>2) { play(); } else { stop(); } }
__________________
Без труда не выловишь и fish-ку из пруда! Последний раз редактировалось Fisher; 22.01.2004 в 19:07. |
|
|||||
|
Guest
Сообщений: n/a
|
Спасибо, я так и думал.
Только наверное лучше вот так: В первом кадре фильма _root.ok=0; На кнопе 1 кадр on (release) { _root.ok+=1; if (_root.ok>0) { _root.muvik.play(); } play(); } 2 кадр on (release) { _root.ok-=1; if (_root.ok=0) { _root.muvik.stop(); } play(); } На муве (_root.muvik) ничего. Лучше запихну в функцию, а то потом облом менять код на сорока кнопках... Или все таки оставить на мувике код onClipEvent (enterFrame) { if (_root.ok>0) { play(); } else { stop(); } } для страховки? А то говорят может не успеть присвоить значение и проверить... |
|
|||||
|
Да я просто общий прынцып обрисовал
![]() Потести - поэксперементируй.
__________________
Без труда не выловишь и fish-ку из пруда! Последний раз редактировалось Fisher; 22.01.2004 в 19:31. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
друзья мои, мы здесь программированием занимаемся, или, простите, чем ? :))
флажками программируем ? про побитовые операции мы ничего не слышали ? что такое ксор не знаем ? где ваша фантазия ! :( запускаем исходник, жмём любое количество кнопок - смотрим что получилось. код из исходника: // создаем 50 кнопок
for (var i = 0; i<50; i++) {
var neo = this.attachMovie("switch", "btn"+i, i);
// раскидываем кнопки от балды
neo._x = random(Stage.width);
neo._y = random(Stage.height);
// запоминаем индекс кнопки
neo.idx = i;
// на нажатие
neo.onRelease = function() {
// если кадр первый - идем во второй, и наоборот
this.gotoAndStop(this._currentframe-1 || 2);
// что такое XOR читаем в хэлпе ВНИМАТЕЛЬНО
_root.btest ^= 1 << this.idx;
};
}
// общий для кнопок флажок
btest = 0;
// следим за флажком
player.onEnterFrame = function() {
if (_root.btest) {
this.play();
} else {
this.stop();
}
};
что происходит - мы каждой кнопке даем индекс. при нажатии мы инвертируем один бит флажка btest. если все биты флажка равны нулю - то флажок будет false. если хоть один бит единица - то уже true. по трудоемкости исполнения — такой вариант кода ниже плинтуса. по гибкости — попробуйте придумать лучше. |
|
|||||
|
Guest
Сообщений: n/a
|
СПАСЫБА, попробуем разобраться.
Токо это у меня не просто кнопки, а кнопки включающие и выключающие звук (присоедененный), и не раскиданны рандомом а в определенном порядке.... Миксер музыкальный короче. Может кто кстати знает исходники миксеров, где все грамотно, програмно построено? |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
тебе из моего примера нужны две строчки выделенные красным цветом. остальное я сделал только для наглядности. а то что у тебя кнопки еще кучу действий делают - это уже твое дело и к этом вопросу не относится. |
|
|||||
![]()
__________________
Без труда не выловишь и fish-ку из пруда! |
|
|||||
|
Guest
Сообщений: n/a
|
Непонятна эта строка
this.gotoAndStop(this._currentframe-1 || 2); а точнее принцип действия вот этого this._currentframe-1 || 2 |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
это то же самое что
только гораздо компактнее |
![]() |
Часовой пояс GMT +4, время: 16:32. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|