有没有人知道由attachCamera()调度的事件的名称,我想拍摄相机加载的照片,我尝试在调用attachCamera之后执行我的代码,但它将VideoDisplay视为空,这是为什么我想知道在attachcamera()完成loeaded后是否触发了事件。
答案 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之后捕获第一帧会导致空白帧。添加了一个简短的超时来解决这个问题。