重置FLVPlayback组件以用于具有相同源的播放

问题描述:

我正在使用相同的FLVPlayback组件在整个我正在构建的大型Flash网站中播放许多网页转换视频。在每次转换时,我使用myFLVPlayback.source设置组件的源,并在继续进行每个页面转换之前监听fl.video.VideoEvent.READY事件。只要每一对网页之间的转换使用不同的视频,这就可以正常工作。重置FLVPlayback组件以用于具有相同源的播放

不幸的是,当两个连续转换需要调用相同的页面到页面转换视频时,我遇到了一个问题。当连续播放两次相同的视频时,将组件的source属性设置为其已有的值似乎不会执行任何操作,这意味着我的听众对于fl.video.VideoEvent.READY不会触发。我可以做一些琐碎的事情,比如将source设置为一个小型的,从未使用过的FLV,然后将其设置为FLV,我实际上将它用于过渡作为“重置”组件的方式,但是我希望知道在这种情况下最佳实践是什么(只要像FLVPlaybackComponent这样的最佳实践可以用直白的脸面来讨论)。

我已经仔细阅读了该组件的livedocs,但空手而归,并且在这个后期阶段手动使用NetStream,NetConnection和Video对象并不是真正的选择。

我建议使用一个线束检查您要播放的URL是否与上一个转换相同,如果是,则只搜索(0)(即倒回视频)而不是重置源。重置源可能会迫使视频重新上传(例如,如果浏览器缓存被禁用),这可能不是你想要的。

if (myFlvPlayback.source == nextTransitionUrl) { 
    myFlvPlayback.seek(0); 
    startTransition(); 
} 
else { 
    myFlvPlayback.source = nextTransitionUrl; 
    // The "ready" event will fire, and your event handler will start playback 
} 

看看FLVPlayback.seek()方法。

干杯

+0

谢谢先生!像魅力一样工作。 – justinbach 2009-12-31 15:31:28

看起来这一个已经解决了一段时间,但我想我反正插入内容。要完全模拟您描述的行为,您可以检查源代码是否为==到下一个URL,然后直接在flvPlayback实例上调用dispatchEvent。这样,它的行为就像它的URL不同,只有你编码的手动干预只是检查URL是否为==。