/** * Neave Camera * * Copyright (C) 2008 Paul Neave * http://www.neave.com/ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation at http://www.gnu.org/licenses/gpl.html */ package com.neave.media { import flash.events.*; import flash.media.*; import flash.system.*; public class NeaveCamera { /** * The requested width of the camera object */ static public var CAMERA_WIDTH:int = 480; /** * The requested height of the camera object */ static public var CAMERA_HEIGHT:int = 360; static private var cam:Camera; public function NeaveCamera() { } /** * Sets up and returns the camera object * * @return A camera object */ static public function getCamera():Camera { // Return the same camera if it has been successfully requested before if (cam != null) { if (cam.muted) Security.showSettings(SecurityPanel.PRIVACY); return cam; } // Get the camera cam = Camera.getCamera(); if (cam != null) { // Set properties if a camera was found cam.setMode(CAMERA_WIDTH, CAMERA_HEIGHT, 30, true); cam.addEventListener(StatusEvent.STATUS, NeaveCamera.statusListener); return cam; } else { // No camera found Security.showSettings(SecurityPanel.CAMERA); return new Camera(); } } /** * Whether the camera object is available or not */ static public function get muted():Boolean { return cam == null || cam.muted || cam.name == null || cam.width == 0; } /** * Camera status response */ static private function statusListener(e:StatusEvent):void { if (e.code == "Camera.Unmuted") Security.showSettings(SecurityPanel.CAMERA); } } }