ActionScript在Air Application上管理相机

时间:2012-01-05 12:03:35

标签: actionscript-3 air

有没有人知道由attachCamera()调度的事件的名称,我想拍摄相机加载的照片,我尝试在调用attachCamera之后执行我的代码,但它将VideoDisplay视为空,这是为什么我想知道在attachcamera()完成loeaded后是否触发了事件。

3 个答案:

答案 0 :(得分:1)

要“拍摄”一张照片,您需要绘制一个位图,该位图使用相机输入作为其来源。您必须定义位图容器的x / y并将其放在...

一旦绘制了位图,你可以做很多事情......取决于你想要的东西。

答案 1 :(得分:0)

通过查看Camera类上的example in the Adobe docs,您可以了解相机活动的工作原理。此外,研究how to use Video有助于了解Air如何使用相机Feed(当然,这取决于使用Video class)。

答案 2 :(得分:0)

计时器可以工作,但更直接的解决方案是在调用Video.attachCamera()之后处理Camera实例调度的第一个ActivityEvent。像这样:

var video:Video = new Video();
var camera:Camera = Camera.getCamera();
camera.addEventListener(ActivityEvent.ACTIVITY, onCameraActivity);

private function onCameraActivity (evt:ActivityEvent) :void {
    camera.removeEventListener(ActivityEvent.ACTIVITY, onCameraActivity);

    // wait a bit to ensure the camera frame is not empty    
    var timer:Timer = new Timer(50, 1);
    timer.addEventListener(TimerEvent.TIMER_COMPLETE,
        function (evt:TimerEvent) :void {
            timer.removeEventListener(TimerEvent.TIMER_COMPLETE, arguments.callee);

            // take snapshot here
            var bitmapData:BitmapData = new BitmapData(video.width, video.height);
            bitmapData.draw(video);
        }
    );
    timer.start();
}

编辑:有些相机需要一些时间来初始化,因此在ActivityEvent.ACTIVITY之后捕获第一帧会导致空白帧。添加了一个简短的超时来解决这个问题。