Поворот изображения с камеры iOS попал в AS3 - PullRequest
2 голосов
/ 20 марта 2012

Я разрабатываю не родное приложение для iOS, используя AS3 поверх Flash CS5.5.Приложение имеет функцию фотографирования с обеих камер (очевидно, по одной в любое время, а не одновременно), и моя проблема состоит в том, что я не знаю, как справиться с поворотом изображения, которое я вижу на моемустройство.

Я ищу решение, но у меня нет решения, которое решает мою проблему.

Вот мой код:

package
{
    import flash.display.DisplayObject;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.ActivityEvent;
    import flash.events.MouseEvent;
    import flash.media.Camera;
    import flash.media.Video;

    public class Main extends Sprite
    {

        private var cam:Camera;
        private var vid:Video;


        public function Main()
        {
            super();

            // support autoOrients
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            cam = Camera.getCamera();

            if (!cam) 
            {
                trace("No camera is installed.");
            }
            else 
            {
               connectCamera();
            }
        }

        private function connectCamera():void 
        {
            cam.setMode(320, 480, 25); 
            cam.setQuality(0,100);
            vid             = new Video();
            vid.width       = cam.width;
            vid.height      = cam.height; 
            vid.attachCamera(cam);
            addChild(vid);    
        }
    }
}

Прежде всего, спасибо за ваше время.Я уже обновил настройки автоориентации, и вот код, которым я управляю:

    package 
        {
            import flash.display.DisplayObject;
            import flash.display.Sprite;
            import flash.display.StageAlign;
            import flash.display.StageScaleMode;
            import flash.events.ActivityEvent;
            import flash.events.MouseEvent;
            import flash.media.Camera;
            import flash.media.Video;
            import flash.events.StageOrientationEvent;
            import flash.display.StageOrientation;


            public class Main2 extends Sprite
            {

                private var cam:Camera;
                private var vid:Video;
                public var _currentOrientation:String;




                public function Main2()
                {
                    cam = Camera.getCamera();

                    if (! cam)
                    {
                        trace("No camera is installed.");
                    }
                    else
                    {
                        connectCamera();
                    }
                    stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener);
                }

                private function connectCamera():void
                {
                    cam.setMode(480, 320, 25);
                    cam.setQuality(0,100);
                    vid= new Video();
                    vid.width = cam.width;
                    vid.height = cam.height;
                    vid.attachCamera(cam);
                    addChild(vid);

                }

                private function orientationChangeListener(e:StageOrientationEvent):void
                {
                    switch (e.afterOrientation)
                    {
                        case StageOrientation.DEFAULT :
                            _currentOrientation = "DEFAULT";
                            //set rotation value here
                            stage.rotation = 0;
                            break;

                        case StageOrientation.ROTATED_RIGHT :
                            _currentOrientation = "ROTATED_RIGHT";
                            //set rotation value here
                            stage.rotation = -90;
                            break;

                        case StageOrientation.ROTATED_LEFT :
                            _currentOrientation = "ROTATED_LEFT";
                            //set rotation value here
                            stage.rotation = 90;
                            break;

                        case StageOrientation.UPSIDE_DOWN :
                            _currentOrientation = "UPSIDE_DOWN";
                            //set rotation value here
                            stage.rotation = 180;
                            break;
                    }
                }


            }
}

Несмотря на предложения с переключателями, при запуске приложения вы видите изображение с камеры.Поворот на 90 градусов, и когда вы устанавливаете устройство (iPhone 4) в горизонтальное положение (вправо или влево), изображение складывается хорошо.И когда вы поворачиваете назад, изображение становится плохим, как при запуске.

Заранее спасибо.

PS: Извините за мой английский.PS2: отредактировано.

1 Ответ

0 голосов
/ 20 марта 2012

Вам необходимо прослушать изменения ориентации устройства и соответственно повернуть захваченное изображение.

import flash.events.StageOrientationEvent;
import flash.display.StageOrientation;

public var _currentOrientation:String;

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener);

private function orientationChangeListener (e:StageOrientationEvent):void {

switch (e.afterOrientation) {
case StageOrientation.DEFAULT :
_currentOrientation = "DEFAULT";
//set rotation value here
break;

case StageOrientation.ROTATED_RIGHT :
_currentOrientation = "ROTATED_RIGHT";
//set rotation value here
break;

case StageOrientation.ROTATED_LEFT :
_currentOrientation = "ROTATED_LEFT";
//set rotation value here
break;

case StageOrientation.UPSIDE_DOWN :
_currentOrientation = "UPSIDE_DOWN";
//set rotation value here
break;
}
}

Обратите внимание, что этот прослушиватель запускается только после изменения ориентации, поэтому я устанавливаю глобальную переменную _currentOrientation, а затем проверяю ее значение всякий раз, когда снимаю изображение.

Еще одна вещь, о которой следует помнить, это то, что существует также НЕИЗВЕСТНОЕ состояние ориентации.

...