2010-06-04 65 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