Изменить размер flash.media.Video - PullRequest
1 голос
/ 04 июня 2010

У меня возникли проблемы с изменением размера моего пользовательского UIComponent обертывающего flash.media.Video объекта (причина, по которой я выбираю этот способ, заключается в том, что mx.control.VideoDisplay не поддерживает потоковое воспроизведение, доступное в flash.media.Video, то есть attachNetStream() ). Как только я создаю размер 320x240 Video и удаляю его из родительского объекта, я не могу заменить его другим, большим или меньшим.

Вот мой код (этот снимок только для камеры, а не для 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 голосов
/ 04 июня 2010

По умолчанию новые экземпляры класса Video имеют ширину 320 пикселей и высоту 240 пикселей. Вам потребуется доступ к вашему видео в классе VideoUI , чтобы вы могли изменить ширина и высота .

следующим образом:

Измените все появления вашей видео переменной в VideoUI.as на

_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 или создать метод. Выбор за вами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...