2010-06-04 15 views
1

Je vais avoir du mal à redimensionner mon habitude UIComponent qui enveloppent flash.media.Video objet (La raison pour laquelle je choisis de cette façon parce que mx.control.VideoDisplay ne prend pas en charge la lecture en continu qui sont disponibles dans flash.media.Video qui est attachNetStream()). Une fois que j'ai créé une taille 320x240 Video et que je l'ai retirée de son parent, je ne peux pas la remplacer par une autre, plus grande ou plus petite.Redimensionner flash.media.Video

Voici mon code (celui-ci ne capture que la caméra et non NetStream).

package media 
{ 
    import flash.media.Camera; 
    import flash.media.Video; 

    import mx.controls.VideoDisplay; 
    import mx.core.UIComponent; 

    public class VideoUI extends UIComponent 
    { 
     private var video:Video; 

     public function VideoUI(width:int, height:int) 
     { 
      super(); 
      video = new Video(width, height); 
      var cam:Camera = Camera.getCamera(); 
      video.attachCamera(cam); 
      addChild(video); 
     } 
    } 
} 

L'autre partie,

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:Script> 
     <![CDATA[ 
      import media.VideoUI; 

      private function addVideoOutput():void 
      { 
       // initial video size 
       var video:VideoUI = new VideoUI(160,120); 
       HBoxVideo.addChild(video);    
      } 

      protected function resizeVideo(event:MouseEvent):void 
      { 
       var videoList:Array = HBoxVideo.getChildren(); 
       for (var i:int = 0; i < videoList.length; i++) 
       { 
        var video:VideoUI = videoList.pop(); 
        HBoxVideo.removeChild(video); 
        // new size that produce the previous size :(
        video = new VideoUI(320, 240); 
        HBoxVideo.addChild(video); 
       } 
      } 

     ]]> 
    </mx:Script> 
    <mx:Button click="addVideoOutput()" x="10" y="265" label="add"/> 
    <mx:HBox x="10" y="10" width="100%" id="HBoxVideo"> 
    </mx:HBox> 
    <mx:Button x="58" y="265" label="resize" click="resizeVideo(event)" id="resizeButton"/> 
</mx:Application> 

Merci beaucoup.

Répondre

0

Par défaut, les nouvelles instances de la classe Video ont une largeur de 320 pixels et une hauteur de 240 pixels. Vous aurez besoin d'accéder à votre vidéo dans le VideoUI classe afin que vous puissiez changer la largeur et hauteur.

comme suit:

Modifier toutes les apparences de votre variable vidéo dans VideoUI.as à

_video 

et appliquer une méthode de lecture.

Nouvelle interface vidéo Classe

package media 
{ 
    import flash.media.Camera; 
    import flash.media.Video; 

    import mx.core.UIComponent; 

    public class VideoUI extends UIComponent 
    { 
     private var _video:Video; 

     public function VideoUI(width:int, height:int) 
     { 
      super(); 
      _video = new Video(width, height); 
      var cam:Camera = Camera.getCamera(); 
      _video.attachCamera(cam); 
      addChild(_video); 
     } 

     public function get video():Video{ 
      return _video; 
     } 
    } 
} 

substituons dans votre fichier MXML principal

video = new VideoUI(320, 240); 

avec

video.video.width=320; 
video.video.height=240; 

Remarque: Vous devez renommer votre VideoUI par exemple à videoui ou les sortes. C'est un peu déroutant. Vous pouvez également le déplacer vers votre classe VideoUI ou créer une méthode. Le choix t'appartient.

+0

Vous avez raison, je devrais avoir accès à la propriété Video à la place VideoUI. Mon mauvais. –