我在数据生成模式下使用 NetStream 使用 appendBytes 播放嵌入的 FLV。流播放完毕后,我想循环播放 FLV 文件。我不确定如何实现这一目标。这是我到目前为止所拥有的(这不是一个完整的例子):
public function createBorderAnimation():void
{
// Load the skin image
borderAnimation = Assets.BorderAnimation;
// Convert the animation to a byte array
borderAnimationBytes = new borderAnimation();
// Initialize the net connection
border_nc = new NetConnection();
border_nc.connect( null );
// Initialize the net stream
border_ns = new NetStream( border_nc );
border_ns.client = { onMetaData:function( obj:Object ):void{ trace(obj); } }
border_ns.addEventListener( NetStatusEvent.NET_STATUS, border_netStatusHandler );
border_ns.play( null );
border_ns.appendBytes( borderAnimationBytes );
// Initialize the animation
border_vd = new Video( 1024, 768 );
border_vd.attachNetStream( border_ns );
// Add the animation to the stage
ui = new UIComponent();
ui.addChild( DisplayObject( border_vd ) );
grpBackground.addElement( ui );
}
protected function border_netStatusHandler( event:NetStatusEvent ):void
{
if( event.info.code == "NetStream.Buffer.Flush" || event.info.code == "NetStream.Buffer.Empty" )
{
border_ns.appendBytesAction( NetStreamAppendBytesAction.RESET_BEGIN );
border_ns.appendBytes( borderAnimationBytes );
border_ns.appendBytesAction( NetStreamAppendBytesAction.END_SEQUENCE );
}
}
这将循环动画,但它开始疯狂地消耗内存。我尝试过使用 NetStream.seek(0) 和 NetStream.appendBytesAction( NetStreamAppendBytesAction.RESET_SEEK ),但是我不确定下一步该做什么。如果您只是尝试在此之后再次调用 appendBytes,它就不起作用,大概是因为我正在附加具有 FLV 标头和内容的完整字节数组?我不是很熟悉这一切是如何运作的。
任何帮助是极大的赞赏。