2010-04-19 6 views
2

Lorsque je lis une vidéo en Flash, elle commence d'abord à se mettre en mémoire tampon puis, lorsque la mémoire tampon est pleine, elle est lue. Pendant le remplissage du tampon, l'objet Video associé affiche automatiquement la première image vidéo.Notification AS3 pour la première image vidéo

Existe-t-il un moyen de recevoir une notification lorsque ce cadre est disponible? Parce que je veux cacher le composant vidéo jusqu'à ce qu'il y ait une image à afficher.

Actuellement, je gère le tampon NetStreamEvent complet, donc il affiche quand il commence à jouer. Mais maintenant j'ai besoin d'un tampon plus grand (10s), donc attendre 10s pour afficher quelque chose à l'utilisateur n'est pas bon.

+1

est-il possible pour vous de générer la première image (ou tout autre cadre d'affiche pour cette matière), afficher vous-même, et puis quand la vidéo a suffisamment tamponnée pour jouer l'enlever? – heavilyinvolved

Répondre

0

vous devriez écouter le "NetStream.Play.Start";

 
package { 
    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.media.Video; 
    import flash.net.NetConnection; 
    import flash.net.NetStream; 

    public class VideoExample extends Sprite { 
     private var videoURL:String = "someVideo.flv"; 
     private var connection:NetConnection; 
     private var stream:NetStream; 
     private var video:Video; 

     public function VideoExample() { 
      connection = new NetConnection(); 
      connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
      connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
      connection.connect(null); 
     } 

     private function netStatusHandler(event:NetStatusEvent):void { 

      trace("event.info.code "+event.info.code); 

      switch (event.info.code) { 
       case "NetConnection.Connect.Success": 
        connectStream(); 
        break; 

       case "NetStream.Play.Start": 
       addChild(video); 
       break; 

       case "NetStream.Play.StreamNotFound": 
        trace("Unable to locate video: " + videoURL); 
        break; 
      } 
     } 

     private function connectStream():void { 
      var stream:NetStream = new NetStream(connection); 
      stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
      stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
      video = new Video(); 
      video.attachNetStream(stream); 
      stream.play(videoURL); 

     } 

     private function securityErrorHandler(event:SecurityErrorEvent):void { 
      trace("securityErrorHandler: " + event); 
     } 

     private function asyncErrorHandler(event:AsyncErrorEvent):void { 
      // ignore AsyncErrorEvent events. 
     } 
    } 
}