淡出movieClip上的音量

时间:2011-08-01 02:41:48

标签: actionscript-3 audio movieclip tweenlite

我在这个问题上环顾网络,并提出以下代码来淡出我的movieclip上的音量:

        var myTransform = new SoundTransform();
        myTransform.volume = 1;
        loaderClip2[indexNumber].soundTransform = myTransform;
        audioTween = new TweenLite(myTransform, 2, {volume:0});

我的影片剪辑存储在数组loaderClip2中,位于由变量indexNumber确定的索引位置。此代码不会产生所需的淡入淡出。谁能看到这里有什么问题?

3 个答案:

答案 0 :(得分:3)

var myTransform:SoundTransform = new SoundTransform(1);

TweenLite.to(myTransform, 1, {volume:0, onUpdate:updateChannel, onUpdateParams:[indexNumber]});

function updateChannel(index:int):void {
    loaderClip2[index].soundTransform = myTransform;
}

答案 1 :(得分:0)

试用此代码:

private function updateChannel() : void { var st : SoundTransform = new SoundTransform(loaderClip2[indexNumber].soundTransform.volume, 0 ); loaderClip2[indexNumber].soundTransform = st; } TweenLite.to(loaderClip2[indexNumber], 4, { volume:.5, ease:Strong.easeInOut, onUpdate:updateChannel } );

设置您自己的参数

答案 2 :(得分:-1)

好吧,伙计们,在尝试使用tweenlite之后,我找到了另一个使用老式ENTER_FRAME事件的解决方案。这是尽可能直截了当的,希望我之前想过它:

所以在上一个函数中我只是这样做:

    myClip.addEventListener(Event.ENTER_FRAME, fadeAudio);

然后刷新事件函数(或其他任何函数):

    var audioshift = 1;
    function fadeAudio(e : Event) : void {
        audioshift -= .05;
        if (audioshift <= 0) {
            audioshift = 0;
            trace("fadeAudio complete");
            e.target.removeEventListener(Event.ENTER_FRAME, fadeAudio);
        }
        var st : SoundTransform = new SoundTransform(audioshift, 0);
        e.target.soundTransform = st; 
    }

很容易就是馅饼。