PDA

Просмотр полной версии : Не работает скрипт кнопки вкл/выкл


PikseL
23.07.2007, 19:27
Привет!
Уверен, что подобная задача решалась и не раз. И вопросы как сделать эту кнопку уже задавались, но мне почему-то не хочется пользоваться готовым. Хочу сам! :rolleyes: Почему корректно не работает:

var onOff:Boolean = true;
var sndTrack:Sound = new Sound();
sndTrack.attachSound("Music");
sndTrack.start();
_root.sndOn_btn._visible = 1;
_root.sndOff_btn._visible = 0;
sndOn_btn.onPress = function() {
if (onOff) {
_root.sndOn_btn._visible = 0;
_root.sndOff_btn._visible = 1;
sndTrack.stop("Music");
onOff = false;
} else {
_root.sndOn_btn._visible = 1;
_root.sndOff_btn._visible = 0;
sndTrack.start();
onOff = true;
}
}

Понятно, что это кнопка вкл/выкл звук. Выключает хорошо :), а вот включать никак не хочет. У меня такое ощущение, что альтернативное условие функции просто не доступно. Подскажите почему или хотя бы как проверить.

PikseL
23.07.2007, 19:32
Сначала думал, что это из-за того что переменная onOff false - поэтому условие попросту не проверяется, но ставил цифровые переменные - та же фигня. Причем, когда конкретно назначаешь условие false или true работает НУЖНАЯ ветка! Где-то я чего-то недопонял...:(

Cкептик
23.07.2007, 21:04
Как вы собираетесь включать музыку по "несуществующей" на поле кнопке?

var mplay:Sound = new Sound();
mplay.attachSound('Sample');
mplay.start();
var spcheck:Boolean = true;
_root.btn_on._visible = true;
_root.btn_off._visible = false;
btn_on.onPress = function() {
if (spcheck == true) {
_root.btn_on._visible = false;
_root.btn_off._visible = true;
mplay.stop();
spcheck = false;
}
}
btn_off.onPress = function() {
if (spcheck == false) {
_root.btn_on._visible = true;
_root.btn_off._visible = false;
mplay.start();
spcheck = true;
}
}

Mr. Fixit
23.07.2007, 23:44
теперь все ок

BARTLEBY
24.07.2007, 00:07
хм.. ужасный код.. как я дума. зрительно получается кнопка как бы одна... вот код более правельный.
.......
делаем мувик в первом кадре рисуем кнопку ВКЛ во втором кадре рисуем кнопку ВЫКЛ в каждом кадре пишем Stop();
в кадре сцены пишем


var mplay:Sound = new Sound();
mplay.attachSound('Sample');
mplay.start();
var spcheck:Boolean = true;
btn.onPress = function(){
if(!spcheck){
mplay.stop();
spcheck = true;
this.gotoAndStop(1);
}else{
mplay.start();
spcheck = false;
this.gotoAndStop(2);
}
}

BARTLEBY
24.07.2007, 01:27
сори скрипт не проверял...
я допустил небольшую ошибку =)
вот рабочий код
var mplay:Sound = new Sound();
mplay.attachSound('Sample');
mplay.start();
var spcheck:Boolean = true;
btn.onPress = function(){
if(spcheck){
mplay.stop();
spcheck = false;
this.gotoAndStop(2);
}else{
spcheck = true;
mplay.start();
this.gotoAndStop(1);
}
}

PikseL
24.07.2007, 07:56
Ночью перед сном думал "что не так". Всё оказалось элементарно, как всегда! Действительно, ведь кнопка On становится невидимой. Пришел сёдня переставил. Заработало, правда, только когда оператор присваивания поменял на сравнение (спасибо, Cкептик!). Я же только начинаю осваивать AS, поэтому думаю и допускаю такие смешные ошибки.

2 BARTLEBY: спасибо, ваш код действительно изящнее. :) меня строго не судите.

Спасибо всем!