0

私はこの2つの機能を持っています。ご覧のとおり、最初のものはビデオをストリーミングしており (魔女がループしている)、2 つ目はオーディオをストリーミングしています (魔女もループしています)。したがって、オーディオの長さがビデオの長さよりも大きいため、ビデオがオーディオを再生しているときに、実行を開始して独立してループする必要があります。どうすればそれを行うことができるのでしょうか。コードを使用してください。

function NCListener(e:NetStatusEvent){

    if (e.info.code == "NetStream.Play.Stop") {

        ns.play("http://media.easyads.bg/ads/display_ads_richmedia/video/avon/maria_ilieva/video_2.flv");
        shaker(null);
        }
    };


var sound:Sound = new Sound();
var soundChannel:SoundChannel= new SoundChannel();

sound.addEventListener(Event.COMPLETE, onSoundLoadComplete  );

function onSoundLoadComplete(e:Event):void{
    sound.removeEventListener(Event.COMPLETE, onSoundLoadComplete);
    soundChannel = sound.play(0, 9999);
    soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);
}

function onSoundChannelSoundComplete(e:Event):void{
    e.currentTarget.removeEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);
    soundChannel = sound.play(0, 9999);
}
4

1 に答える 1

0

まず第一に、あなたは必要ありません soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);

サウンドの実行が終了するとトリガーされますが、ループしているため、再度再生する必要はありません。

まず、行を移動する必要があります

soundChannel = sound.play(0, 9999);

の直後に配置しますns.play。そのため、ビデオが開始されるとすぐにサウンドが開始されます。次に、ビデオの開始時に再びループしないようにするには、soundChannel が存在するかどうかを確認します。

if (soundChannel == null)
    soundChannel = sound.play(0, 9999);

後でサウンドをビデオと同期させる方法はないことに注意してください。完全に flashplayer の意志に依存します。

于 2013-02-21T12:08:20.840 に答える