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

sulsaram 20.04.2007 23:55

Ещё раз о кнопках....Не срабатывает скрипт...
 
Помогите ещё разик юзеру Суть проблемы(для кто не читал мой предыдущий пост):
Надо чтобы после нажатия одной из трёх кнопок в Кадре 1(при нажатии кнопки проигрывается звук. Для каждой кнопки- разный.) ролик переходил на кадр 2. Но не раньше, чем закончится проигрывание звука !!!

Использовал скрипт (скрипт-линки для звуков тоже задал):

Код:

stop();
button.onPress = function() {
        var my_sound:Sound = new Sound();
        my_sound.attachSound("1");
        my_sound.start(0, 1);

        my_sound.onSoundComplete = function() {
                gotoAndStop(2);
          };
};

Но почему-то он не срабатывает и ролик не переходит на Кадр 2....:o
Странно, но в тех примерах, что мне сбросили:drinks: скрипт работает как надо...:moder:

ПОЖАЛУЙСТА, проверьте мой исходник! Что в нём не так???
И если не трудно- напишите скрипт в моём исходнике для остальных двух кнопок! (я так понял, что исправлять мои каракули будет сложнее, чем писать наново):wacko:
В ЧЁМ же была моя ошибка?

ИСХОДНИК:
http://***************/files/27022649/Help_me.fla.html

Kikasso 21.04.2007 00:19

попробуй так:
Код:

stop();
button.onPress = function() {
var my_sound:Sound = new Sound(_root);
my_sound.attachSound("1");
my_sound.onSoundComplete = function() {
trace("complete");
_root.gotoAndStop(2);
};
my_sound.start();
};

Я вызываю start без параметров, по умолчанию он играет с нуля один раз. Звук теперь не глобальный, а имеет "опору". И поменял местами строки. Может помочь, особенно третье.
Да, и прямо сказал кому в кадр идти.

sulsaram 21.04.2007 00:29

Нет! Не помогло...Мне прислали исходник, где РАБОТАЛ тот скрипт, что я использовал! Но когда я создаю всё с нуля, рисую кнопки и вставляю этот скрипт...он не работает...
А как писать скрипты для кнопок?(если у меня 3 кнопки- то надо писать 3 скрипта в одном кадре и одном слое? Каким образом? )
Напишите, пожалуйста в исходнике! А то я с Флэш, на "Вы" да ещё и со всеми титулами....

Kikasso 21.04.2007 00:38

А звук играет?
Кнопка на сцене имеет instance name? (на панели свойств)
Звук в библиотеке имеет linkage id?

sulsaram 21.04.2007 00:59

1- Звук играет!
3- Звук в библиотеке имеет linkage id !
2- Юзер не понял что такое "instance name"...Наверное, что нету...Где и как его ставить?Как его применять в скрипте? напиши, пожалуйста! на примере !

Chas 21.04.2007 01:10

instance name - имя экземпляра мувика на сцене. выставляется в панели свойств (та, которая открывается на Ctrl-F3 по умолчанию)

Kikasso 21.04.2007 01:57

"instance name" это в данном случае "button", и раз по нажатию звук играет, то оно прописано.
upd:
А, нет, не прописано. Напиши и все заработает.
http://xstein.spb.ru/trash/instance-name.png

sulsaram 21.04.2007 02:48

спасибо!!!!!!!!!! РАБОТАЕТ!!!!!!!!!
Но пока только с одной кнопкой....
И ПОСЛЕДНЕЕ:
Если, например, у меня НЕСКОЛЬКО кнопок в одном кадре, которым надо задать те же параметры(воспроизведение звука и после этого переход на следующий кадр)
Напрример:
кнопки: "Button1", "Button2"
звуки "1" и "2" в кнопках соответственно.
То как тогда для двух кнопок писать этот скрипт??? А для трёх? В одном слое?
Так, что-ли??? Только не смейтесь....:confused: ( подозреваю, что нет...;) )

Код:

stop();
button.onPress = function() {
        var my_sound:Sound = new Sound();
        my_sound.attachSound("1");
        my_sound.start(0, 1);
        my_sound.onSoundComplete = function() {
                gotoAndStop(2);
        };
};

button2.onPress = function() {
        var my_sound:Sound = new Sound();
        my_sound.attachSound("2");
        my_sound.start(0, 1);
        my_sound.onSoundComplete = function() {
                gotoAndStop(2);
        };
}


Kikasso 21.04.2007 03:05

код обведите, кнопочка с решеточкой в "расширенном режиме"
Мыслите верно. Весь код в одном месте. И большие-маленькие буквы это не одно и то же.
И можно написать гораздо короче. Отредактируете пост, научу.

sulsaram 21.04.2007 11:10

Обвёл....Научите, пожалуйста....очень...хочется чтобы наконец-то ролик заработал, как надо!

Kikasso 21.04.2007 15:15

Супер.
Кнопки на сцене - b1, b2, b3
Звуки в библиотеке - s1, s2, s3
Имя "button" мне не очень нравится, оно пересекается с название класса Button, а глюк вы видели - код вообще не должен был работать.
Цифрой тоже можно звук метить, она становится стокой "1" но возможны разночтения - лучше честно писать строчку.
Первый вариант - повторить код для каждой кнопки. Ваш вариант сработает, но много букв и лекго ошибиться.
Код:

//создаем звук
var my_sound:Sound = new Sound(_root);
//пишем обработчик
function btnOnPress(){
        trace (this );//просто чтобы понять что такое this
        my_sound.attachSound(this.snd);
        my_sound.start(0);
        my_sound.onSoundComplete = function() {
        _root.gotoAndStop(this.frameToGo);
}}
//раздаем указатели
b1.snd = "s1"; b2.snd="s2"; b3.snd="s3";
b1.frameToGo = 2;
b2.frameToGo = 3;// какой кадр нужен?
b3.frameToGo = 4;
// ну и последний штрих -
b1.onPress = b2.onPress = b3.onPress = btnOnPress;

Я поставил разные кадры для перехода. this ключевое слово, кнопка смотрит переменную у себя.

sulsaram 21.04.2007 23:54

Спасибо! Только сейчас появилась возможность посмотреть форум! Пойду пробовать! О результатах доложу !
:-)

sulsaram 22.04.2007 00:54

ПРОСТИТЕ, ЧТО НАДОЕДАЮ ВАМ !:o

Ролик выдаёт ошибку при нажатии любой из кнопок.
Например, когда я нажимаю кнопки, то звук в них проигрывается,
но на следуюющий фрейм ПЕРЕХОДА НЕТ (мне нужно, чтобы каждая
из кнопок делала переход на кадр 2). И сразу же выскакивает предупреждение типа:
"_level0.b3
_level0.b2
_level0.b1" - это я нажал каждую кнопку, чтобы показать вид ошибки. Когда нажать одну кнопку(например 2)- то оштибка выглядет: "_level0.b2"

Кнопкам и звукам я линки задал.
ВОТ как я переписал ВАШ код(моожет, тут чего-то не хватает???:

Код:

stop();
var my_sound:Sound = new Sound(_root);
function btnOnPress(){
        trace (this );
        my_sound.attachSound(this.snd);
        my_sound.start(0);
        my_sound.onSoundComplete = function() {
        _root.gotoAndStop(this.frameToGo);
}}
b1.snd = "s1"; b2.snd="s2"; b3.snd="s3";
b1.frameToGo = 2;
b2.frameToGo = 2;
b3.frameToGo = 2;
b1.onPress = b2.onPress = b3.onPress = btnOnPress;

СПАСИБО ЗА ПОМОЩЬ !!!

screamge 22.04.2007 00:58

Код:

stop();
var my_sound:Sound = new Sound(_root);
function btnOnPress(){
        trace (this);
        my_sound.attachSound(this.snd);
        my_sound.start(0);
        my_sound.onSoundComplete = function() {
        _root.gotoAndStop(2);
}}
b1.snd = "s1";
b2.snd="s2";
b3.snd="s3";

b1.onPress = b2.onPress = b3.onPress = btnOnPress;


sulsaram 22.04.2007 02:26

РАБОТАЕТ!!!!:yahoo:
СПАСИБО ОГРОМНОЕ!!!!
:drinks:

И ещё один МААААленький вопросик:
Как будет выглядеть этот скрипт, если, например все кнопки переключают на Кадр 2, а Кнопка1 (например) переключает на кадр 3???
Напишите, пожалуйста!:o

Kikasso 22.04.2007 02:33

Цитата:

Сообщение от sulsaram
Ролик выдаёт ошибку при нажатии любой из кнопок.
Когда нажать одну кнопку(например 2)- то оштибка выглядет: "_level0.b2"

Да это не ошибка, это trace() срабатывает..
поставьте два слеша в начале этой строки , то есть закомментируйте ее.
А, сорри, this для звука - это сам звук, а не кнопка.. Он не видит переменной. Счас подумаю..
Код:

stop();
var my_sound:Sound = new Sound(_root);
function btnOnPress(){
 //trace (this ); теперь это комментарий и не вызовется
 my_sound.attachSound(this.snd);
 my_sound.start(0);
 //создаем локальную переменную
 var frameToGo:Number = this.frameToGo;
 //это будет изнутри кнопки и все видно
 my_sound.onSoundComplete = function() {
  _root.gotoAndStop( frameToGo );
 // теперь все работает, потому что мы создаем функцию динамически
 // и frameToGo у нас локальный что и покажет следующая строка
  trace( "frameToGo: " + frameToGo  );//потом закомментируйте
 }
}
b1.snd = "s1"; b2.snd="s2"; b3.snd="s3";
b1.frameToGo = 3;
b2.frameToGo = 2;
b3.frameToGo = 2;// хоть 20, лишь бы кадров хватило
b1.onPress = b2.onPress = b3.onPress = btnOnPress;


sulsaram 22.04.2007 03:16

РАБОТАЕТ !!!!!!!!!!!!!!! СПАСИБО!!!!:yahoo: :drinks:

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

ЗЫ Извините, если надоел Вам....:rolleyes:

Kikasso 22.04.2007 03:49

Добавьте в btnOnPress такую строчку:
Код:

b1.enabled = b2.enabled = b3.enabled = false;
Если надо включить кнопки - то же самое, только true.

__Bender 22.04.2007 03:58

используй array

sulsaram 22.04.2007 13:29

Работает!!!!!!!!!!! Всем ещё раз ОГРОМНОЕ спасибо!!!!!!!!!!:drinks: :yahoo: ;)
:bye:


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

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