【问题标题】:How do I capture an Image using Flex 4.5.1, in a mobile project?如何在移动项目中使用 Flex 4.5.1 捕获图像?
【发布时间】:2011-11-28 13:03:56
【问题描述】:

我是 Flex 和 ActionScript 编程方面的新手,并尽可能快地学习它。我尝试了几个示例应用程序。现在我正在尝试通过与 PC 连接的网络摄像头使用 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"/>    

但是没有检测到摄像头.. currentsState 总是不受支持...有什么问题吗...

使用 FlexMobileProject.. 为移动设备捕获图像/视频的任何其他方式?

任何与 Flex 移动开发相关的博客/教程都会对 gr8 有所帮助..谢谢...

【问题讨论】:

    标签: actionscript-3 apache-flex flexbuilder


    【解决方案1】:

    来自文档: “使用 Camera 类从客户端系统或设备摄像头捕获视频。使用 Video 类在本地监控视频。”

    您应该阅读的第一件事是关于Camera Class

    然后查看Video 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);
        }
    }
    }
    

    看看你能不能让那个位工作,然后再问一个关于过滤图片并保存它的问题。

    【讨论】:

    • 感谢@SQLiteNoob,我已经尝试了上面的代码,但不幸的是我在var camera:Camera = Camera.getCamera(); 收到错误,getCamera() 返回 null。
    • 当我为项目提供相机权限时,代码开始工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2013-04-15
    • 2011-10-07
    • 1970-01-01
    • 2012-01-18
    • 2011-08-11
    相关资源
    最近更新 更多