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

AzagThoth 25.04.2010 00:08

Да, имел в виду как раз :) sound[n]
Цитата:

Сообщение от studmar
однако файл после проигрывания при новом "отвод-подвод" не воспроизводится вновь

Это происходит потому что свойство position которые мы с Вами придумали совпало со свойством уже имеющимся у класса Sound, с объектом которого мы работаем. То есть достаточно просто измененить имя нашего свойства position на другое.
А вот и код:
Код AS1/AS2:

var sounds:Array = new Array();
 
for (i = 1; i < 4; i++) {
        sounds[i]  = new Array();
        var mc:MovieClip  = this.createEmptyMovieClip('s' + i + '_mc', this.getNextHighestDepth());
        sounds[i] = new Sound (mc);
        sounds[i].loadSound('s' + i + '.mp3', false);
        sounds[i].onSoundComplete = function():Void {
        sounds[i].positionS=0;
        sounds[i].flag=true;
}
 
        var btn:MovieClip = this['s' + i + '_btn'];
        btn.num = i;
        btn.onRollOver  = startPlay;
        btn.onRollOut  = fadeOutSound;
 
}
 
function startPlay() {
        var n:Number = this.num;
        sounds[n].start(Math.floor(sounds[n].positionS/1000));
        sounds[n].setVolume(40);
 
 
}
 
function fadeOutSound() {
        n = this.num;
          if (id) {
        clearInterval(id);
    }
    var volume = sounds[n].getVolume();
    id = setInterval(fadeOut, 10);
    function fadeOut():Void {
 
          sounds[n].setVolume(volume--);
        if (volume<=0)
                {
            clearInterval(id);
                      sounds[n].stop()
                if (sounds[n].flag == true) {
                sounds[n].flag = false;
                }
                else {
                sounds[n].positionS=sounds[n].position;               
                }
 
 
        }
        }
    }


studmar 25.04.2010 02:59

Странно, но не сработало...
После проигрывания полностью любого из mc и при отводе-подводе они не воспроизводятся.
посмотрите пожалуйста в чем проблема

AzagThoth 25.04.2010 03:18

В общем это виновата моя невнимательность. Вот я поправил код.
Код AS1/AS2:

var sounds:Array = new Array();
 
for (i=1; i<4; i++) {
        sounds[i] = new Array();
        var mc:MovieClip = this.createEmptyMovieClip('s'+i+'_mc', this.getNextHighestDepth());
        sounds[i] = new Sound(mc);
        sounds[i].loadSound('s'+i+'.mp3',false);
        sounds[i].onSoundComplete = function():Void  {
                this.positionS = 0;
                this.flag = true;
        };
        var btn:MovieClip = this['s'+i+'_btn'];
        btn.num = i;
        btn.onRollOver = startPlay;
        btn.onRollOut = fadeOutSound;
}
 
function startPlay() {
        var n:Number = this.num;
        sounds[n].start(Math.floor(sounds[n].positionS/1000));
        sounds[n].setVolume(40);
}
 
function fadeOutSound() {
        n = this.num;
        if (id) {
                clearInterval(id);
        }
        var volume = sounds[n].getVolume();
        id = setInterval(fadeOut, 10);
        function fadeOut():Void {
 
                sounds[n].setVolume(volume--);
                if (volume<=0) {
                        clearInterval(id);
                        sounds[n].stop();
                        if (sounds[n].flag == true) {
                                sounds[n].flag = false;
                        } else {
                                sounds[n].positionS = sounds[n].position;
                        }
                }
        }
}

Добавлено через 4 минуты
Причём тут - http://www.flasher.ru/forum/showpost...9&postcount=25
Я написал, что нужно в функции обработчике объекта Sound описывать параметры объекта через ключевое слово this. А потом видимо "расслабился" и сам упустил это из виду :) Эх.

studmar 25.04.2010 03:24

Вот теперь все круто!
Огромное Вам спасибо, надеюсь тема будет полезна!


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

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