调整flash.media.Video的大小

时间:2010-06-04 15:16:24

标签: flex flash actionscript-3 video

我无法调整包装UIComponent对象的自定义flash.media.Video(我选择这种方式的原因是因为mx.control.VideoDisplay不支持flash.media.Video中可用的流式播放1}}即attachNetStream())。一旦我创建了320x240 Video大小并将其从父级中移除,我就无法将其替换为更大或更小的大小。

这是我的代码(这只是捕获Camera而不是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>

非常感谢。

1 个答案:

答案 0 :(得分:0)

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

如下:

将VideoUI.as中 video 变量的所有外观更改为

_video

并使用吸气剂。

新视频用户界面

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类或制作方法。选择是你的。