Как мне захватить изображение с помощью Flex 4.5.1 в мобильном проекте? - PullRequest
0 голосов
/ 28 ноября 2011

Я новичок в программировании на Flex и ActionScript и изучаю его так быстро, как только могу. Я пробовал несколько примеров приложений. Сейчас я пытаюсь сделать снимок с помощью ActionScript через веб-камеру, подключенную к ПК.

Я написал следующий код ...

        protected var myCam:CameraUI;

        protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void
        {
            if (CameraUI.isSupported){
                currentState = "normal";
                myCam = new CameraUI();
                myCam.addEventListener(MediaEvent.COMPLETE, onComplete);
            }
            else currentState = "unsupported";
        }

        protected function btnPic_clickHandler(event:MouseEvent):void
        {
            img.filters = [];
            myCam.launch(MediaType.IMAGE);
        }

        protected function onComplete(evt:MediaEvent):void
        {
            img.source = evt.data.file.url;
        }

        protected function applyFilter():void
        {
            if (img.filters.length==0)
            {
                var matrixArray:Array = [.33,.33,.33,0,0,
                    .33,.33,.33,0,0,
                    .33,.33,.33,0,0,
                    0,0,0,1,0];
                var blackWhiteFilter:ColorMatrixFilter = new ColorMatrixFilter(matrixArray);
                img.filters = [blackWhiteFilter];
                btnBW.label = "COLOR";
            }
            else 
            {
                img.filters = [];
                btnBW.label = "B/W FILTER";
            }
        }
    ]]>
</fx:Script>

<s:states>
    <s:State name="normal"/>
    <s:State name="unsupported"/>
</s:states>

<s:layout>
    <s:VerticalLayout paddingTop="20" paddingBottom="20" paddingLeft="10" paddingRight="20" gap="40" 
                      horizontalAlign="center" verticalAlign="middle"/>
</s:layout>

<s:Label text="This device does not support Camera." width="95%" includeIn="unsupported"/>
<s:HGroup includeIn="normal">
    <s:Button id="btnPic" click="btnPic_clickHandler(event)" label="TAKE A PICTURE"/>
    <s:Button id="btnBW" click="applyFilter()" label="B/W FILTER" />
</s:HGroup>

<s:Image id="img" height="649" y="124" width="460" x="10" includeIn="normal"/>    

Но камера не распознается ... currentState всегда не поддерживается ... Что-то не так ...

Любой другой способ захвата изображения / видео для мобильных устройств с помощью FlexMobileProject ..?

Любой блог / учебник, связанный с Flex Mobile Development, поможет gr8. Спасибо ...

1 Ответ

1 голос
/ 28 ноября 2011

Из документов: «Используйте класс Camera для захвата видео с клиентской системы или камеры устройства. Используйте класс Video для локального мониторинга видео».

Первое, что вы должны прочитать о Camera Class .

Тогда посмотрите Видео Класс .

Пример из документации:

    package {
        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
        import flash.events.*;
        import flash.media.Camera;
        import flash.media.Video;

public class CameraExample extends Sprite {
    private var video:Video;

    public function CameraExample() {
        stage.scaleMode = StageScaleMode.NO_SCALE;
        stage.align = StageAlign.TOP_LEFT;

        var camera:Camera = Camera.getCamera();

        if (camera != null) {
            camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
            video = new Video(camera.width * 2, camera.height * 2);
            video.attachCamera(camera);
            addChild(video);
        } else {
            trace("You need a camera.");
        }
    }

    private function activityHandler(event:ActivityEvent):void {
        trace("activityHandler: " + event);
    }
}
}

Посмотрите, сможете ли вы заставить этот бит работать, а затем задайте другой вопрос о фильтрации изображения и его сохранении.

...