Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Включение-выключение звука. (http://www.flasher.ru/forum/showthread.php?t=169809)

Anig 12.10.2011 18:27

Включение-выключение звука.
 
Здравствуйте дорогие. На сайте есть музыка, ее надо
1. зациклить
2. кнопкой выключать/включать
Проблема вот в чем
Пишу как-то так
Код AS3:

var drum:DrumSound = new DrumSound();
var channel:SoundChannel = drum.play(0,1000);
 
 function myListener(event:MouseEvent):void
{        if(x1==0)
{       
        x1=1;
        pausePosition = channel.position;
        channel.stop();}
  else
  {        x1=0;
        channel=drum.play(pausePosition);}
 
        }

И пробллема в том, что после остановки музыки хоть раз, цикла уже нет, музыка играет раз и все
а если пишу
Код AS3:

channel=drum.play(pausePosition,1000);}

то зацикливается только тот "хвостик-остаток " музыки, который оставался после стопа. Он и крутится потом в цикле..
Помогите пожалуйста, чтоб и цикл был и чтоб при этом музыка, закончившись, всегда начиналась снова, а не с позиции pausePosition

Genzo 12.10.2011 18:36

Цитата:

loops:int (default = 0) — Определяет, сколько раз звук возвращается к значению startTime, прежде чем прекратится воспроизведение звукового канала.
в вашем случае startTime = pausePosition , вот он и играет только ту часть.
вешайте на channel , событие soundComplete и по нему заставляйте звук играть заново

Добавлено через 2 минуты
Код AS3:

 var drum:DrumSound = new DrumSound();
            var channel:SoundChannel = drum.play();
            channel.addEventListener(Event.SOUND_COMPLETE , soundComplete);
 
            function soundComplete(e:Event):void
            {
                e.currentTarget = drum.play();
            }
 
            function myListener(event:MouseEvent):void
            {        if(x1==0)
            {       
                x1=1;
                pausePosition = channel.position;
                channel.stop();}
            else
            {        x1=0;
                channel=drum.play(pausePosition);}
 
            }


Anig 12.10.2011 18:41

Вот спасибо!! Сейчас попробую.

Добавлено через 2 часа 17 минут
Ой(( Вы знаете проблема остается..
Во первых пришлось писать вместо
Код AS3:

e.currentTarget = drum.play();

так, потому что сказал он мне property read only, что-то такое...
Код AS3:

channel= drum.play(0);

А во вторых почему то никогда и не генерируется SOUND_COMPLETE, это видно по trace(), которая не вызывается
Код AS3:

 function soundComplete(e:Event):void
            {        trace("tut");
                                x1=0;
                channel= drum.play(0);
 
            }

В чем тут может быть проблема?

Добавлено через 3 часа 11 минут
Люди дорогие, ну как может не генерироваться этот complete?

Добавлено через 4 часа 27 минут
Нашелся секрет!!)
Каждый раз, при
Код AS3:

channel=drum.play(pausePosition);

создается новый обьект и ему надо снова приписывать listener.

Добавлено через 4 часа 28 минут
и при
Код AS3:

channel=drum.play();

тоже


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

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