2010-06-04 63 views
1

我无法调整我的自定义UIComponent该包装flash.media.Video对象(我选择这种方式是因为mx.control.VideoDisplay不支持流回放flash.media.VideoattachNetStream(),现有的原因)。一旦我创建了320x240 Video大小并将其从其父项中移除,我无法用另一个更大或更小的大小替换它。调整大小flash.media.Video

这是我的代码(这个只捕获Camera not 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); 
     } 
    } 
} 

另一部分,

<?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> 

非常感谢你。

回答

0

默认情况下,Video类的新实例宽320像素,高240像素。您将需要访问视频,VideoUI类,以便您可以更改宽度高度

如下:

变化VideoUI.as您视频变量的所有出场

_video 

和应用吸气。

新的视频UI类

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; 
     } 
    } 
} 

更换主MXML文件

video = new VideoUI(320, 240); 

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

注意:您应该重命名VideoUI实例到videoui或各种。这有点令人困惑。您也可以将其移至VideoUI类或制作方法。这是你的选择。

+0

你说得对,我应该访问视频的属性,而不是VideoUI。 我的不好。 – 2010-06-05 04:10:39