0

是否可以?。我对 ActionScript 3 很陌生,并且一直在玩滑块组件。我已经设置了一个带有图像的滑块,并设置了一个声音来播放,所以如果值大于 0 它将播放,如果它大于 4 它将停止。然而,当我导出它时,它没有出现任何错误。我确定我必须将 event.value 更改为其他内容而不是数字。或者更确切地说使用另一个事件,但我不确定..所以我认为如果你站在这些图像之间,mp3 会继续播放,而不是在它击中的每个值上重新启动。这就是我所拥有的


function changeHandler(event:SliderEvent):void { 
        aLoader.source = "pic"+event.value+".jpeg";

}

function music(event:SliderEvent):void {
    var mySound:Sound = new tes1();
    var myChannel:SoundChannel = new SoundChannel();
    mySound.load(new URLRequest("tes1.mp3"));





        if (event.value > 0 || event.value > 4 ){
            myChannel = mySound.play();
        }

        else{
            myChannel.stop();
        }
}
4

1 回答 1

0

您将在每个滑块事件中创建一个新的声道,如果值超出所需范围,则停止该新声道。但它一开始并没有播放任何声音。

您可能想要的是将声音通道存储在事件处理程序之外,并且当值在范围内跳跃时可能不会重播声音:

slider.addEventListener(SliderEvent.CHANGE, music);

// Stores the sound channel between slider movements.
var myChannel:SoundChannel = new SoundChannel();
var isPlaying:Boolean = false;

function music(event:SliderEvent):void {
    var mySound:Sound = new tes1();
    mySound.load(new URLRequest("tes1.mp3"));  

    if (event.value > 0 || event.value > 4) {

        // Check if we are already playing the sound and, if yes, do nothing
        if (!isPlaying) {
            myChannel = mySound.play();
            isPlaying = true;
        }

    } else {
        myChannel.stop();
        isPlaying = false;
    }
}

因此,当值超出所需范围时,它停止播放最后一个声音,当值在范围内移动时,它只是继续播放而不是重新开始。

于 2012-11-22T01:22:02.720 回答