[facekit] detect face -> draw green ball on the nose
sample face recognition application "draw green ball on the nose"
// sample face recognition application "draw green ball on the nose"
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.net.URLRequest;
import flash.system.Security;
import flash.text.TextField;
import flash.utils.Dictionary;
[SWF(width=320, height=263)]
public class facekitsample extends Sprite
{
private var _loader:Loader;
private var _label:TextField;
private var _ball:Sprite;
public function facekitsample()
{
// load facekit
Security.allowDomain("facekit.net");
Security.loadPolicyFile("http://facekit.net/flash/crossdomain.xml");
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoadComplete);
_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
_loader.load(new URLRequest("http://facekit.net/flash/facekit_module"));
addChild(_loader);
// status label
_label = new TextField();
addChild(_label);
// ball
_ball = new Sprite();
_ball.graphics.beginFill(0x00ff00);
_ball.graphics.drawCircle(0, 0, 20);
_ball.graphics.endFill();
_ball.visible = false;
addChild(_ball);
}
private function onProgress(e:ProgressEvent):void
{
_label.text = "Loading... " + int(100.0 * e.bytesLoaded / e.bytesTotal) + "%";
}
private function onLoadComplete(e:Event):void
{
var cfacekit:Class = _loader.contentLoaderInfo.applicationDomain.getDefinition("facekit") as Class;
(_loader.content as cfacekit).withoutgraphics = true;
(_loader.content as cfacekit).setCallback(callback);
}
private function callback(d:Dictionary):void
{
_label.text = d["state"];
if (d["state"] == "detected") {
_ball.visible = true;
_ball.x = d["x"] + d["width"] / 2 + d["width"] / 2 * Math.sin(d["xdir"] / 180.0 * Math.PI);
_ball.y = d["y"] + d["height"] / 2;
_ball.width = d["width"] / 3;
_ball.height = _ball.width;
}
}
}
}