import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Matrix;
var A1V=true;
var A2V=true;
var A3V=true;
var A4V=true;
var A5V=true;
var A6V=true;
var A7V=true;
var B1V=true;
var B2V=true;
var B3V=true;
var B4V=true;
var B5V=true;
var B6V=true;
var B7V=true;
var C1V=true;
var C2V=true;
var C3V=true;
var C4V=true;
var C5V=true;
var C6V=true;
var C7V=true;
var D1V=true;
var D2V=true;
var D3V=true;
var D4V=true;
var D5V=true;
var D6V=true;
var D7V=true;
var A1X:int=0;
var A2X:int=0;
var A3X:int=0;
var A4X:int=0;
var A5X:int=0;
var A6X:int=0;
var A7X:int=0;
var B1X:int=0;
var B2X:int=0;
var B3X:int=0;
var B4X:int=0;
var B5X:int=0;
var B6X:int=0;
var B7X:int=0;
var C1X:int=0;
var C2X:int=0;
var C3X:int=0;
var C4X:int=0;
var C5X:int=0;
var C6X:int=0;
var C7X:int=0;
var D1X:int=0;
var D2X:int=0;
var D3X:int=0;
var D4X:int=0;
var D5X:int=0;
var D6X:int=0;
var D7X:int=0;
var A1Y:int=0;
var A2Y:int=0;
var A3Y:int=0;
var A4Y:int=0;
var A5Y:int=0;
var A6Y:int=0;
var A7Y:int=0;
var B1Y:int=0;
var B2Y:int=0;
var B3Y:int=0;
var B4Y:int=0;
var B5Y:int=0;
var B6Y:int=0;
var B7Y:int=0;
var C1Y:int=0;
var C2Y:int=0;
var C3Y:int=0;
var C4Y:int=0;
var C5Y:int=0;
var C6Y:int=0;
var C7Y:int=0;
var D1Y:int=0;
var D2Y:int=0;
var D3Y:int=0;
var D4Y:int=0;
var D5Y:int=0;
var D6Y:int=0;
var D7Y:int=0;
const A1:Sprite = new Sprite();
const A2:Sprite = new Sprite();
const A3:Sprite = new Sprite();
const A4:Sprite = new Sprite();
const A5:Sprite = new Sprite();
const A6:Sprite = new Sprite();
const A7:Sprite = new Sprite();
const B1:Sprite = new Sprite();
const B2:Sprite = new Sprite();
const B3:Sprite = new Sprite();
const B4:Sprite = new Sprite();
const B5:Sprite = new Sprite();
const B6:Sprite = new Sprite();
const B7:Sprite = new Sprite();
const C1:Sprite = new Sprite();
const C2:Sprite = new Sprite();
const C3:Sprite = new Sprite();
const C4:Sprite = new Sprite();
const C5:Sprite = new Sprite();
const C6:Sprite = new Sprite();
const C7:Sprite = new Sprite();
const D1:Sprite = new Sprite();
const D2:Sprite = new Sprite();
const D3:Sprite = new Sprite();
const D4:Sprite = new Sprite();
const D5:Sprite = new Sprite();
const D6:Sprite = new Sprite();
const D7:Sprite = new Sprite();
const CANVAS:Sprite = new Sprite();
var _dragging:Boolean=false;
var _corner:Point;
T_Prev.addEventListener(MouseEvent.MOUSE_DOWN, setAnchor);
function drawBox(x, y, width, height) {
if (A1V) {
A1.graphics.lineStyle(2, 0xFF0000);
A1.graphics.beginFill(0x222222, .09);
A1.graphics.drawRect(x, y, width, height);
A1X=x;
A1Y=y;
addChild(A1);
A1V=false;
} else if (A2V) {
A2.graphics.lineStyle(2, 0xFF0000);
A2.graphics.beginFill(0x222222, .09);
A2.graphics.drawRect(x, y, width, height);
A2X=x;
A2Y=y;
addChild(A2);
A2V=false;
} else if (A3V) {
A3.graphics.lineStyle(2, 0xFF0000);
A3.graphics.beginFill(0x222222, .09);
A3.graphics.drawRect(x, y, width, height);
A3X=x;
A3Y=y;
addChild(A3);
A3V=false;
} else if (A4V) {
A4.graphics.lineStyle(2, 0xFF0000);
A4.graphics.beginFill(0x222222, .09);
A4.graphics.drawRect(x, y, width, height);
A4X=x;
A4Y=y;
addChild(A4);
A4V=false;
} else if (A5V) {
A5.graphics.lineStyle(2, 0xFF0000);
A5.graphics.beginFill(0x222222, .09);
A5.graphics.drawRect(x, y, width, height);
A5X=x;
A5Y=y;
addChild(A5);
A5V=false;
} else if (A6V) {
A6.graphics.lineStyle(2, 0xFF0000);
A6.graphics.beginFill(0x222222, .09);
A6.graphics.drawRect(x, y, width, height);
A6X=x;
A6Y=y;
addChild(A6);
A6V=false;
} else if (A7V) {
A7.graphics.lineStyle(2, 0xFF0000);
A7.graphics.beginFill(0x222222, .09);
A7.graphics.drawRect(x, y, width, height);
A7X=x;
A7Y=y;
addChild(A7);
A7V=false;
} else if (B1V) {
B1.graphics.lineStyle(2, 0xFF0000);
B1.graphics.beginFill(0x222222, .09);
B1.graphics.drawRect(x, y, width, height);
B1X=x;
B1Y=y;
addChild(B1);
B1V=false;
} else if (B2V) {
B2.graphics.lineStyle(2, 0xFF0000);
B2.graphics.beginFill(0x222222, .09);
B2.graphics.drawRect(x, y, width, height);
B2X=x;
B2Y=y;
addChild(B2);
B2V=false;
} else if (B3V) {
B3.graphics.lineStyle(2, 0xFF0000);
B3.graphics.beginFill(0x222222, .09);
B3.graphics.drawRect(x, y, width, height);
B3X=x;
B3Y=y;
addChild(B3);
B3V=false;
} else if (B4V) {
B4.graphics.lineStyle(2, 0xFF0000);
B4.graphics.beginFill(0x222222, .09);
B4.graphics.drawRect(x, y, width, height);
B4X=x;
B4Y=y;
addChild(B4);
B4V=false;
} else if (B5V) {
B5.graphics.lineStyle(2, 0xFF0000);
B5.graphics.beginFill(0x222222, .09);
B5.graphics.drawRect(x, y, width, height);
B5X=x;
B5Y=y;
addChild(B5);
B5V=false;
} else if (B6V) {
B6.graphics.lineStyle(2, 0xFF0000);
B6.graphics.beginFill(0x222222, .09);
B6.graphics.drawRect(x, y, width, height);
B6X=x;
B6Y=y;
addChild(B6);
B6V=false;
} else if (B7V) {
B7.graphics.lineStyle(2, 0xFF0000);
B7.graphics.beginFill(0x222222, .09);
B7.graphics.drawRect(x, y, width, height);
B7X=x;
B7Y=y;
addChild(B7);
B7V=false;
} else if (C1V) {
C1.graphics.lineStyle(2, 0xFF0000);
C1.graphics.beginFill(0x222222, .09);
C1.graphics.drawRect(x, y, width, height);
C1X=x;
C1Y=y;
addChild(C1);
C1V=false;
} else if (C2V) {
C2.graphics.lineStyle(2, 0xFF0000);
C2.graphics.beginFill(0x222222, .09);
C2.graphics.drawRect(x, y, width, height);
C2X=x;
C2Y=y;
addChild(C2);
C2V=false;
} else if (C3V) {
C3.graphics.lineStyle(2, 0xFF0000);
C3.graphics.beginFill(0x222222, .09);
C3.graphics.drawRect(x, y, width, height);
C3X=x;
C3Y=y;
addChild(C3);
C3V=false;
} else if (C4V) {
C4.graphics.lineStyle(2, 0xFF0000);
C4.graphics.beginFill(0x222222, .09);
C4.graphics.drawRect(x, y, width, height);
C4X=x;
C4Y=y;
addChild(C4);
C4V=false;
} else if (C5V) {
C5.graphics.lineStyle(2, 0xFF0000);
C5.graphics.beginFill(0x222222, .09);
C5.graphics.drawRect(x, y, width, height);
C5X=x;
C5Y=y;
addChild(C5);
C5V=false;
} else if (C6V) {
C6.graphics.lineStyle(2, 0xFF0000);
C6.graphics.beginFill(0x222222, .09);
C6.graphics.drawRect(x, y, width, height);
C6X=x;
C6Y=y;
addChild(C6);
C6V=false;
} else if (C7V) {
C7.graphics.lineStyle(2, 0xFF0000);
C7.graphics.beginFill(0x222222, .09);
C7.graphics.drawRect(x, y, width, height);
C7X=x;
C7Y=y;
addChild(C7);
C7V=false;
} else if (D1V) {
D1.graphics.lineStyle(2, 0xFF0000);
D1.graphics.beginFill(0x222222, .09);
D1.graphics.drawRect(x, y, width, height);
D1X=x;
D1Y=y;
addChild(D1);
D1V=false;
} else if (D2V) {
D2.graphics.lineStyle(2, 0xFF0000);
D2.graphics.beginFill(0x222222, .09);
D2.graphics.drawRect(x, y, width, height);
D2X=x;
D2Y=y;
addChild(D2);
D2V=false;
} else if (D3V) {
D3.graphics.lineStyle(2, 0xFF0000);
D3.graphics.beginFill(0x222222, .09);
D3.graphics.drawRect(x, y, width, height);
D3X=x;
D3Y=y;
addChild(D3);
D3V=false;
} else if (D4V) {
D4.graphics.lineStyle(2, 0xFF0000);
D4.graphics.beginFill(0x222222, .09);
D4.graphics.drawRect(x, y, width, height);
D4X=x;
D4Y=y;
addChild(D4);
D4V=false;
} else if (D5V) {
D5.graphics.lineStyle(2, 0xFF0000);
D5.graphics.beginFill(0x222222, .09);
D5.graphics.drawRect(x, y, width, height);
D5X=x;
D5Y=y;
addChild(D5);
D5V=false;
} else if (D6V) {
D6.graphics.lineStyle(2, 0xFF0000);
D6.graphics.beginFill(0x222222, .09);
D6.graphics.drawRect(x, y, width, height);
D6X=x;
D6Y=y;
addChild(D6);
D6V=false;
} else if (D7V) {
D7.graphics.lineStyle(2, 0xFF0000);
D7.graphics.beginFill(0x222222, .09);
D7.graphics.drawRect(x, y, width, height);
D7X=x;
D7Y=y;
addChild(D7);
D7V=false;
}
}
function setAnchor(e:MouseEvent):void {
if (! _dragging) {
CANVAS.graphics.clear();
_corner=new Point(e.stageX,e.stageY);
_dragging=true;
T_Prev.addEventListener(MouseEvent.MOUSE_MOVE, liveDrag);
}
}
function completeRect(e:MouseEvent):void {
if (_dragging) {
_dragging=false;
T_Prev.removeEventListener(MouseEvent.MOUSE_MOVE, liveDrag);
CANVAS.removeEventListener(MouseEvent.MOUSE_UP, completeRect);
//CANVAS.graphics.lineStyle(2, 0x000000);
CANVAS.graphics.beginFill(0x222222, .1);
CANVAS.graphics.drawRect(_corner.x, _corner.y, e.stageX - _corner.x, e.stageY - _corner.y);
addChild(CANVAS);
drawBox(_corner.x, _corner.y, e.stageX - _corner.x, e.stageY - _corner.y);
}
}
function liveDrag(e:MouseEvent):void {
CANVAS.graphics.clear();
CANVAS.graphics.lineStyle(1, 0xFF0000);
CANVAS.graphics.drawRect(_corner.x, _corner.y, e.stageX - _corner.x, e.stageY - _corner.y);
CANVAS.addEventListener(MouseEvent.MOUSE_UP, completeRect);
addChild(CANVAS);
}
A_Master.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerAM);
function mouseDownHandlerAM(event:MouseEvent):void {
A1V=true;
A2V=true;
A3V=true;
A4V=true;
A5V=true;
A6V=true;
A7V=true;
A1.graphics.clear();
A2.graphics.clear();
A3.graphics.clear();
A4.graphics.clear();
A5.graphics.clear();
A6.graphics.clear();
A7.graphics.clear();
}
B_Master.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerBM);
function mouseDownHandlerBM(event:MouseEvent):void {
B1V=true;
B2V=true;
B3V=true;
B4V=true;
B5V=true;
B6V=true;
B7V=true;
B1.graphics.clear();
B2.graphics.clear();
B3.graphics.clear();
B4.graphics.clear();
B5.graphics.clear();
B6.graphics.clear();
B7.graphics.clear();
}
C_Master.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerCM);
function mouseDownHandlerCM(event:MouseEvent):void {
C1V=true;
C2V=true;
C3V=true;
C4V=true;
C5V=true;
C6V=true;
C7V=true;
C1.graphics.clear();
C2.graphics.clear();
C3.graphics.clear();
C4.graphics.clear();
C5.graphics.clear();
C6.graphics.clear();
C7.graphics.clear();
}
D_Master.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerDM);
function mouseDownHandlerDM(event:MouseEvent):void {
D1V=true;
D2V=true;
D3V=true;
D4V=true;
D5V=true;
D6V=true;
D7V=true;
D1.graphics.clear();
D2.graphics.clear();
D3.graphics.clear();
D4.graphics.clear();
D5.graphics.clear();
D6.graphics.clear();
D7.graphics.clear();
}
A1_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerA1);
function mouseDownHandlerA1(event:MouseEvent):void {
A1V=true;
A1.graphics.clear();
}
A2_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerA2);
function mouseDownHandlerA2(event:MouseEvent):void {
A2V=true;
A2.graphics.clear();
}
A3_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerA3);
function mouseDownHandlerA3(event:MouseEvent):void {
A3V=true;
A3.graphics.clear();
}
A4_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerA4);
function mouseDownHandlerA4(event:MouseEvent):void {
A4V=true;
A4.graphics.clear();
}
A5_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerA5);
function mouseDownHandlerA5(event:MouseEvent):void {
A5V=true;
A5.graphics.clear();
}
A6_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerA6);
function mouseDownHandlerA6(event:MouseEvent):void {
A6V=true;
A6.graphics.clear();
}
A7_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerA7);
function mouseDownHandlerA7(event:MouseEvent):void {
A7V=true;
A7.graphics.clear();
}
B1_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerB1);
function mouseDownHandlerB1(event:MouseEvent):void {
B1V=true;
B1.graphics.clear();
}
B2_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerB2);
function mouseDownHandlerB2(event:MouseEvent):void {
B2V=true;
B2.graphics.clear();
}
B3_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerB3);
function mouseDownHandlerB3(event:MouseEvent):void {
B3V=true;
B3.graphics.clear();
}
B4_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerB4);
function mouseDownHandlerB4(event:MouseEvent):void {
B4V=true;
B4.graphics.clear();
}
B5_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerB5);
function mouseDownHandlerB5(event:MouseEvent):void {
B5V=true;
B5.graphics.clear();
}
B6_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerB6);
function mouseDownHandlerB6(event:MouseEvent):void {
B6V=true;
B6.graphics.clear();
}
B7_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerB7);
function mouseDownHandlerB7(event:MouseEvent):void {
B7V=true;
B7.graphics.clear();
}
C1_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerC1);
function mouseDownHandlerC1(event:MouseEvent):void {
C1V=true;
C1.graphics.clear();
}
C2_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerC2);
function mouseDownHandlerC2(event:MouseEvent):void {
C2V=true;
C2.graphics.clear();
}
C3_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerC3);
function mouseDownHandlerC3(event:MouseEvent):void {
C3V=true;
C3.graphics.clear();
}
C4_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerC4);
function mouseDownHandlerC4(event:MouseEvent):void {
C4V=true;
C4.graphics.clear();
}
C5_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerC5);
function mouseDownHandlerC5(event:MouseEvent):void {
C5V=true;
C5.graphics.clear();
}
C6_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerC6);
function mouseDownHandlerC6(event:MouseEvent):void {
C6V=true;
C6.graphics.clear();
}
C7_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerC7);
function mouseDownHandlerC7(event:MouseEvent):void {
C7V=true;
C7.graphics.clear();
}
D1_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerD1);
function mouseDownHandlerD1(event:MouseEvent):void {
D1V=true;
D1.graphics.clear();
}
D2_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerD2);
function mouseDownHandlerD2(event:MouseEvent):void {
D2V=true;
D2.graphics.clear();
}
D3_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerD3);
function mouseDownHandlerD3(event:MouseEvent):void {
D3V=true;
D3.graphics.clear();
}
D4_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerD4);
function mouseDownHandlerD4(event:MouseEvent):void {
D4V=true;
D4.graphics.clear();
}
D5_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerD5);
function mouseDownHandlerD5(event:MouseEvent):void {
D5V=true;
D5.graphics.clear();
}
D6_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerD6);
function mouseDownHandlerD6(event:MouseEvent):void {
D6V=true;
D6.graphics.clear();
}
D7_Butt.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerD7);
function mouseDownHandlerD7(event:MouseEvent):void {
D7V=true;
D7.graphics.clear();
}
Clear_CANVAS.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerCC);
function mouseDownHandlerCC(event:MouseEvent):void {
CANVAS.graphics.clear();
}
var cam:Camera=Camera.getCamera();
cam.setMode(320,240,10);
var video:Video=new Video(cam.width,cam.height);
video.attachCamera(cam);
CamClockHolder.addChild(video);
var tprevUpdate = setInterval(t_prev,250);
//----------------button
var fA = 8;
var fB = 8;
var fC = 8;
var fD = 8;
var isStopped = false;
start_btn.addEventListener(MouseEvent.MOUSE_UP, StartUp);
stop_btn.addEventListener(MouseEvent.MOUSE_UP, StopDown);
clr_t.addEventListener(MouseEvent.MOUSE_UP, clear_t);
var ClockUpdate;
var threshold = false;
function clear_t(e){
threshold=true;
}
function StartUp(e){
isStopped = false;
var ClockUpdate = setInterval(CamInt,333);
}
function StopDown(e){
isStopped = true;
clearInterval(ClockUpdate);
}
function t_prev(){
var tBmd:BitmapData=new BitmapData(video.width,video.height,false,0xFF000000);
tBmd.draw(CamClockHolder);
if (!threshold){
var bf:BlurFilter = new BlurFilter(5,5,1);
tBmd.applyFilter(tBmd, tBmd.rect, new Point(0,0), bf);
tBmd.threshold(tBmd,tBmd.rect,new Point(0,0),">",0xFF111111,0xFF00FF00,0x00FFFFFF,false)
}
var tprev:Bitmap=new Bitmap(tBmd);
T_Prev.addChild(tprev);
}
function CamInt() {
if (!isStopped){
//trace(A1X+","+A1Y+","+A1.width+","+A1.height);
var bmd:BitmapData=new BitmapData(video.width,video.height,false,0xFF000000);
var A1oBMD:Number=averageColour(getBMD(bmd,A1X,A1Y,A1.width,A1.height));
var A1_B:Number=brightnessOf(A1oBMD);
var A1_S:Number=saturationOf(A1oBMD);
var A1_V:Number=valuesOf(A1oBMD);
var A2oBMD:Number=averageColour(getBMD(bmd,A2X,A2Y,A2.width,A2.height));
var A2_B:Number=brightnessOf(A2oBMD);
var A2_S:Number=saturationOf(A2oBMD);
var A2_V:Number=valuesOf(A2oBMD);
var A3oBMD:Number=averageColour(getBMD(bmd,A3X,A3Y,A3.width,A3.height));
var A3_B:Number=brightnessOf(A3oBMD);
var A3_S:Number=saturationOf(A3oBMD);
var A3_V:Number=valuesOf(A3oBMD);
var A4oBMD:Number=averageColour(getBMD(bmd,A4X,A4Y,A4.width,A4.height));
var A4_B:Number=brightnessOf(A4oBMD);
var A4_S:Number=saturationOf(A4oBMD);
var A4_V:Number=valuesOf(A4oBMD);
var A5oBMD:Number=averageColour(getBMD(bmd,A5X,A5Y,A5.width,A5.height));
var A5_B:Number=brightnessOf(A5oBMD);
var A5_S:Number=saturationOf(A5oBMD);
var A5_V:Number=valuesOf(A5oBMD);
var A6oBMD:Number=averageColour(getBMD(bmd,A6X,A6Y,A6.width,A6.height));
var A6_B:Number=brightnessOf(A6oBMD);
var A6_S:Number=saturationOf(A6oBMD);
var A6_V:Number=valuesOf(A6oBMD);
var A7oBMD:Number=averageColour(getBMD(bmd,A7X,A7Y,A7.width,A7.height));
var A7_B:Number=brightnessOf(A7oBMD);
var A7_S:Number=saturationOf(A7oBMD);
var A7_V:Number=valuesOf(A7oBMD);
var B1oBMD:Number=averageColour(getBMD(bmd,B1X,B1Y,B1.width,B1.height));
var B1_B:Number=brightnessOf(B1oBMD);
var B1_S:Number=saturationOf(B1oBMD);
var B1_V:Number=valuesOf(B1oBMD);
var B2oBMD:Number=averageColour(getBMD(bmd,B2X,B2Y,B2.width,B2.height));
var B2_B:Number=brightnessOf(B2oBMD);
var B2_S:Number=saturationOf(B2oBMD);
var B2_V:Number=valuesOf(B2oBMD);
var B3oBMD:Number=averageColour(getBMD(bmd,B3X,B3Y,B3.width,B3.height));
var B3_B:Number=brightnessOf(B3oBMD);
var B3_S:Number=saturationOf(B3oBMD);
var B3_V:Number=valuesOf(B3oBMD);
var B4oBMD:Number=averageColour(getBMD(bmd,B4X,B4Y,B4.width,B4.height));
var B4_B:Number=brightnessOf(B4oBMD);
var B4_S:Number=saturationOf(B4oBMD);
var B4_V:Number=valuesOf(B4oBMD);
var B5oBMD:Number=averageColour(getBMD(bmd,B5X,B5Y,B5.width,B5.height));
var B5_B:Number=brightnessOf(B5oBMD);
var B5_S:Number=saturationOf(B5oBMD);
var B5_V:Number=valuesOf(B5oBMD);
var B6oBMD:Number=averageColour(getBMD(bmd,B6X,B6Y,B6.width,B6.height));
var B6_B:Number=brightnessOf(B6oBMD);
var B6_S:Number=saturationOf(B6oBMD);
var B6_V:Number=valuesOf(B6oBMD);
var B7oBMD:Number=averageColour(getBMD(bmd,B7X,B7Y,B7.width,B7.height));
var B7_B:Number=brightnessOf(B7oBMD);
var B7_S:Number=saturationOf(B7oBMD);
var B7_V:Number=valuesOf(B7oBMD);
var C1oBMD:Number=averageColour(getBMD(bmd,C1X,C1Y,C1.width,C1.height));
var C1_B:Number=brightnessOf(C1oBMD);
var C1_S:Number=saturationOf(C1oBMD);
var C1_V:Number=valuesOf(C1oBMD);
var C2oBMD:Number=averageColour(getBMD(bmd,C2X,C2Y,C2.width,C2.height));
var C2_B:Number=brightnessOf(C2oBMD);
var C2_S:Number=saturationOf(C2oBMD);
var C2_V:Number=valuesOf(C2oBMD);
var C3oBMD:Number=averageColour(getBMD(bmd,C3X,C3Y,C3.width,C3.height));
var C3_B:Number=brightnessOf(C3oBMD);
var C3_S:Number=saturationOf(C3oBMD);
var C3_V:Number=valuesOf(C3oBMD);
var C4oBMD:Number=averageColour(getBMD(bmd,C4X,C4Y,C4.width,C4.height));
var C4_B:Number=brightnessOf(C4oBMD);
var C4_S:Number=saturationOf(C4oBMD);
var C4_V:Number=valuesOf(C4oBMD);
var C5oBMD:Number=averageColour(getBMD(bmd,C5X,C5Y,C5.width,C5.height));
var C5_B:Number=brightnessOf(C5oBMD);
var C5_S:Number=saturationOf(C5oBMD);
var C5_V:Number=valuesOf(C5oBMD);
var C6oBMD:Number=averageColour(getBMD(bmd,C6X,C6Y,C6.width,C6.height));
var C6_B:Number=brightnessOf(C6oBMD);
var C6_S:Number=saturationOf(C6oBMD);
var C6_V:Number=valuesOf(C6oBMD);
var C7oBMD:Number=averageColour(getBMD(bmd,C7X,C7Y,C7.width,C7.height));
var C7_B:Number=brightnessOf(C7oBMD);
var C7_S:Number=saturationOf(C7oBMD);
var C7_V:Number=valuesOf(C7oBMD);
var D1oBMD:Number=averageColour(getBMD(bmd,D1X,D1Y,D1.width,D1.height));
var D1_B:Number=brightnessOf(D1oBMD);
var D1_S:Number=saturationOf(D1oBMD);
var D1_V:Number=valuesOf(D1oBMD);
var D2oBMD:Number=averageColour(getBMD(bmd,D2X,D2Y,D2.width,D2.height));
var D2_B:Number=brightnessOf(D2oBMD);
var D2_S:Number=saturationOf(D2oBMD);
var D2_V:Number=valuesOf(D2oBMD);
var D3oBMD:Number=averageColour(getBMD(bmd,D3X,D3Y,D3.width,D3.height));
var D3_B:Number=brightnessOf(D3oBMD);
var D3_S:Number=saturationOf(D3oBMD);
var D3_V:Number=valuesOf(D3oBMD);
var D4oBMD:Number=averageColour(getBMD(bmd,D4X,D4Y,D4.width,D4.height));
var D4_B:Number=brightnessOf(D4oBMD);
var D4_S:Number=saturationOf(D4oBMD);
var D4_V:Number=valuesOf(D4oBMD);
var D5oBMD:Number=averageColour(getBMD(bmd,D5X,D5Y,D5.width,D5.height));
var D5_B:Number=brightnessOf(D5oBMD);
var D5_S:Number=saturationOf(D5oBMD);
var D5_V:Number=valuesOf(D5oBMD);
var D6oBMD:Number=averageColour(getBMD(bmd,D6X,D6Y,D6.width,D6.height));
var D6_B:Number=brightnessOf(D6oBMD);
var D6_S:Number=saturationOf(D6oBMD);
var D6_V:Number=valuesOf(D6oBMD);
var D7oBMD:Number=averageColour(getBMD(bmd,D7X,D7Y,D7.width,D7.height));
var D7_B:Number=brightnessOf(D7oBMD);
var D7_S:Number=saturationOf(D7oBMD);
var D7_V:Number=valuesOf(D7oBMD);
var A1_Bool = testBoolean(A1_B,A1_S,A1_V);
var A2_Bool = testBoolean(A2_B,A2_S,A2_V);
var A3_Bool = testBoolean(A3_B,A3_S,A3_V);
var A4_Bool = testBoolean(A4_B,A4_S,A4_V);
var A5_Bool = testBoolean(A5_B,A5_S,A5_V);
var A6_Bool = testBoolean(A6_B,A6_S,A6_V);
var A7_Bool = testBoolean(A7_B,A7_S,A7_V);
var B1_Bool = testBoolean(B1_B,B1_S,B1_V);
var B2_Bool = testBoolean(B2_B,B2_S,B2_V);
var B3_Bool = testBoolean(B3_B,B3_S,B3_V);
var B4_Bool = testBoolean(B4_B,B4_S,B4_V);
var B5_Bool = testBoolean(B5_B,B5_S,B5_V);
var B6_Bool = testBoolean(B6_B,B6_S,B6_V);
var B7_Bool = testBoolean(B7_B,B7_S,B7_V);
var C1_Bool = testBoolean(C1_B,C1_S,C1_V);
var C2_Bool = testBoolean(C2_B,C2_S,C2_V);
var C3_Bool = testBoolean(C3_B,C3_S,C3_V);
var C4_Bool = testBoolean(C4_B,C4_S,C4_V);
var C5_Bool = testBoolean(C5_B,C5_S,C5_V);
var C6_Bool = testBoolean(C6_B,C6_S,C6_V);
var C7_Bool = testBoolean(C7_B,C7_S,C7_V);
var D1_Bool = testBoolean(D1_B,D1_S,D1_V);
var D2_Bool = testBoolean(D2_B,D2_S,D2_V);
var D3_Bool = testBoolean(D3_B,D3_S,D3_V);
var D4_Bool = testBoolean(D4_B,D4_S,D4_V);
var D5_Bool = testBoolean(D5_B,D5_S,D5_V);
var D6_Bool = testBoolean(D6_B,D6_S,D6_V);
var D7_Bool = testBoolean(D7_B,D7_S,D7_V);
trace(A1_Bool+","+A2_Bool+","+A3_Bool+","+A4_Bool+","+A5_Bool+","+A6_Bool+","+A7_Bool+","+fA);
trace(B1_Bool+","+B2_Bool+","+B3_Bool+","+B4_Bool+","+B5_Bool+","+B6_Bool+","+B7_Bool+","+fB);
trace(C1_Bool+","+C2_Bool+","+C3_Bool+","+C4_Bool+","+C5_Bool+","+C6_Bool+","+C7_Bool+","+fC);
trace(D1_Bool+","+D2_Bool+","+D3_Bool+","+D4_Bool+","+D5_Bool+","+D6_Bool+","+D7_Bool+","+fD);
fA = findNum(A1_Bool,A2_Bool,A3_Bool,A4_Bool,A5_Bool,A6_Bool,A7_Bool,fA);
fB = findNum(B1_Bool,B2_Bool,B3_Bool,B4_Bool,B5_Bool,B6_Bool,B7_Bool,fB);
fC = findNum(C1_Bool,C2_Bool,C3_Bool,C4_Bool,C5_Bool,C6_Bool,C7_Bool,fC);
fD = findNum(D1_Bool,D2_Bool,D3_Bool,D4_Bool,D5_Bool,D6_Bool,D7_Bool,fD);
/*trace(fA);
trace(fB);
trace(fC);
trace(fD);*/
trace(fA+""+fB+":"+fC+""+fD);
Clock_Text.text = fA+""+fB+":"+fC+""+fD;
/* var theColour:Number=averageColour(fBMD);
var theBrightness:Number=brightnessOf(theColour);
var theSaturation:Number=saturationOf(theColour);
var theValue:Number=valuesOf(theColour);*/
//trace(theBrightness+","+theSaturation+","+theValue);
/*var lgprev:Bitmap=new Bitmap(fBMD);
BMD_LGPrev.addChild(lgprev);
var cBitmap:BitmapData=new BitmapData(50,50,false,theColour);
var smprev:Bitmap=new Bitmap(cBitmap);
BMD_Prev.addChild(smprev);
*/
}
}
function getBMD(oSource:BitmapData,oX,oY,oW,oH):BitmapData{
oSource.draw(CamClockHolder);
var nbmd:BitmapData=new BitmapData(oW,oH,false,0xFF000000);
if (!threshold){
var bf:BlurFilter = new BlurFilter(5,5,1);
oSource.applyFilter(oSource, oSource.rect, new Point(0,0), bf);
oSource.threshold(oSource,oSource.rect,new Point(0,0),">",0xFF111111,0xFF00FF00,0x00FFFFFF,false)
}
oSource.copyPixels(nbmd, new Rectangle(oX,oY,oW,oH), new Point(oX,oY));
var mat:Matrix = new Matrix();
mat.translate(oX*-1, oY*-1);
nbmd.draw(CamClockHolder,mat);
var lgprev:Bitmap=new Bitmap(oSource);
BMD_LGPrev.addChild(lgprev);
return nbmd;
}
function testBoolean(bVal,sVal,vVal){
if (bVal >= 25 || sVal >= 70 || vVal >= 10){
return true;
}
else {
return false;
}
}
function findNum(v1,v2,v3,v4,v5,v6,v7,oldV:String){
if (!v1 && !v2 && v3 && !v4 && !v5 && v6 && !v7){
return "1";
} else if (v1 && !v2 && v3 && v4 && v5 && !v6 && v7){
return "2";
} else if (v1 && !v2 && v3 && v4 && !v5 && v6 && v7){
return "3";
} else if (!v1 && v2 && v3 && v4 && !v5 && v6 && !v7){
return "4";
} else if (v1 && v2 && !v3 && v4 && !v5 && v6 && v7){
return "5";
} else if (v1 && v2 && !v3 && v4 && v5 && v6 && v7){
return "6";
} else if (v1 && !v2 && v3 && !v4 && !v5 && v6 && !v7){
return "7";
} else if (v1 && v2 && v3 && v4 && v5 && v6 && v7){
return "8";
} else if (v1 && v2 && v3 && v4 && !v5 && v6 && v7){
return "9";
} else if (v1 && v2 && v3 && !v4 && v5 && v6 && v7){
return "0";
} else if (!v1 && !v2 && !v3 && !v4 && !v5 && !v6 && !v7){
return "0";
} else {
trace("unknown");
return oldV;
}
}
function averageColour( source:BitmapData ):Number {
var red:Number=0;
var green:Number=0;
var blue:Number=0;
var count:Number=0;
var pixel:Number;
for (var x:Number = 0; x < source.width; x++) {
for (var y:Number = 0; y < source.height; y++) {
pixel=source.getPixel(x,y);
red+=pixel>>16&0xFF;
green+=pixel>>8&0xFF;
blue+=pixel&0xFF;
count++;
}
}
red/=count;
green/=count;
blue/=count;
return red << 16 | green << 8 | blue;
}
function brightnessOf(colour:Number):Number {
var R:Number=0;
var G:Number=0;
var B:Number=0;
R+=colour>>16&0xFF;
G+=colour>>8&0xFF;
B+=colour&0xFF;
var br=Math.sqrt(R*R*.241+G*G*.691+B*B*.068);
return Math.round(br);
}
function saturationOf(colour:Number):Number {
var R:Number=0;
var G:Number=0;
var B:Number=0;
R+=colour>>16&0xFF;
G+=colour>>8&0xFF;
B+=colour&0xFF;
R = (R / 255);
G = (G / 255);
B = (B / 255);
var min=Math.min(Math.min(R,G),B);
var max=Math.max(Math.max(R,G),B);
var saturation;
// Saturation
if (max==0) {
saturation=0;
} else {
saturation = 1 - (min/max);
}
return Math.round(saturation * 100);
}
function valuesOf(colour:Number) {
var R:Number=0;
var G:Number=0;
var B:Number=0;
R+=colour>>16&0xFF;
G+=colour>>8&0xFF;
B+=colour&0xFF;
R = (R / 255);
G = (G / 255);
B = (B / 255);
var min=Math.min(Math.min(R,G),B);
var max=Math.max(Math.max(R,G),B);
var values=max;
return Math.round(values * 100);
}
Refactorings
No refactoring yet !
I know a lot of you are going to shriek in terror at this code, but in my defense I'm new to ActionScript and in general to programming. Anyways let me explain to you what this code does.
In a nutshell all it does is read a webcam and find out what time is on a scoreboard or digital clock.
Not in a nutshell:
In the beginning it reads a webcam in to a bitmap that is displayed on the stage and then applies a threshold filter to it. Then, with the mouse you can draw rectangles on the stage where the webcam is. These rectangles of the bitmap are then averaged for color. Then the brightness, saturation, value of the rectangles are found and computed. Next, it passes the computed values into a bunch of if else statements and finds a number and outputs it to a string on the stage.
A few things might be wrong, so take that explanation with a grain of salt.
If anything can be improved upon even a little tell me please because right now this thing consumes RAM CPU Cycles like a hungry hippo.
A download of the .fla is here ==> http://sharebee.com/42b38a0e (1.08 MB)