NetStream olaylarını izleme

İki tür olay değerli kullanım verileri sağlar: netStatus ve mediaTypeData . Ek olarak, NetStream oynatma kafasının konumunu düzenli bir şekilde günlüğe kaydetmek için bir zamanlayıcı kullanılabilir.

netStatus olayları, bir kullanıcının akışın ne kadarını görüntülediğini belirlemek için kullanabileceğiniz bilgiler sağlar. Arabellek ve RTMFP akışı geçiş olayları ayrıca netStatus olayına neden olur.

mediaTypeData olayları meta veri ve XMP veri bilgileri sağlar. Netstream.Play.Complete olayı bir mediaTypeData olayı olarak gönderilir. İşaret noktaları, metin ve görüntüler dahil olmak üzere akış içinde gömülü olan diğer veriler de mediaTypeData olayları aracılığıyla kullanılabilir durumdadır.

Aşağıdaki örnek bir uygulamadaki herhangi bir etkin NetStream öğesindeki durum ve veri olaylarını izleyen bir sınıfın nasıl oluşturulacağını gösterir. Normalde, bu tür bir sınıf analiz etmeyi düşündüğü verileri bir koleksiyon sunucusuna yükler.

package com.adobe.example 
{ 
    import flash.events.NetDataEvent; 
    import flash.events.NetMonitorEvent; 
    import flash.events.NetStatusEvent; 
    import flash.net.NetMonitor; 
    import flash.net.NetStream; 
     
    public class NetStreamEventMonitor 
    { 
        private var netmon:NetMonitor; 
        private var heartbeat:Timer = new Timer( 5000 ); 
         
        public function NetStreamEventMonitor() 
        { 
            //Create NetMonitor object 
            netmon = new NetMonitor(); 
            netmon.addEventListener( NetMonitorEvent.NET_STREAM_CREATE, newNetStream ); 
 
            //Start the heartbeat timer 
            heartbeat.addEventListener( TimerEvent.TIMER, onHeartbeat ); 
            heartbeat.start(); 
        } 
         
        //On new NetStream 
        private function newNetStream( event:NetMonitorEvent ):void 
        { 
            trace( "New Netstream object"); 
            var stream:NetStream = event.netStream; 
            stream.addEventListener(NetDataEvent.MEDIA_TYPE_DATA, onStreamData); 
            stream.addEventListener(NetStatusEvent.NET_STATUS, onStatus);             
        } 
         
        //On data events from a NetStream object 
        private function onStreamData( event:NetDataEvent ):void 
        { 
             
            var netStream:NetStream = event.target as NetStream; 
            trace( "Data event from " + netStream.info.uri + " at " + event.timestamp ); 
            switch( event.info.handler ) 
            { 
                case "onMetaData": 
                    //handle metadata; 
                    break; 
                case "onXMPData": 
                    //handle XMP; 
                    break; 
                case "onPlayStatus": 
                    //handle NetStream.Play.Complete 
                case "onImageData": 
                    //handle image 
                    break; 
                case "onTextData": 
                    //handle text 
                    break; 
                default: 
                    //handle other events 
                     
            } 
        } 
         
        //On status events from a NetStream object 
        private function onStatus( event:NetStatusEvent ):void 
        { 
            trace( "Status event from " + event.target.info.uri + " at " + event.target.time ); 
            //handle status events 
        } 
        //On heartbeat timer 
        private function onHeartbeat( event:TimerEvent ):void 
        { 
            var streams:Vector.<NetStream> = netmon.listStreams(); 
            for( var i:int = 0; i < streams.length; i++ ) 
            { 
                trace( "Heartbeat on " + streams[i].info.uri + " at " + streams[i].time ); 
                //handle heartbeat event 
            } 
        } 
         
    } 
}