package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.PixelSnapping; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.media.Camera; import flash.media.Video; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import org.libspark.flartoolkit.core.FLARCode; import org.libspark.flartoolkit.core.FLARParam; import org.libspark.flartoolkit.core.FLARRgbRaster; import org.libspark.flartoolkit.detector.FLARSingleMarkerDetector; [Event(name="init",type="flash.events.Event")] [Event(name="init",type="flash.events.Event")] [Event(name="ioError",type="flash.events.IOErrorEvent")] [Event(name="securityError",type="flash.events.SecurityErrorEvent")] public class ARAppBase extends Sprite { private var _width:int; private var _height:int; private var _codeWidth:int; protected var _param:FLARParam; protected var _code:FLARCode; protected var _raster:FLARRgbRaster; protected var _detector:FLARSingleMarkerDetector; protected var _webcam:Camera; protected var _video:Video; protected var _capture:Bitmap; public function ARAppBase() { } protected function init(codeFile:String, canvasWidth:int = 320, canvasHeight:int = 240, codeWidth:int = 80):void { _width = canvasWidth; _height = canvasHeight; _codeWidth = codeWidth; _param = FLARParam.getDefaultParam(_width, _height); var loader:URLLoader = new URLLoader(); loader.addEventListener(IOErrorEvent.IO_ERROR, dispatchEvent); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, dispatchEvent); loader.dataFormat = URLLoaderDataFormat.TEXT; loader.addEventListener(Event.COMPLETE, _onLoadCode); loader.load(new URLRequest(codeFile)); } private function _onLoadCode(e:Event):void { _code = new FLARCode(16, 16); _code.loadARPattFromFile(URLLoader(e.target).data); // setup webcam _webcam = Camera.getCamera(); if (!_webcam) { throw new Error('No webcam!!!!'); } _webcam.setMode(_width, _height, 30); _video = new Video(_width, _height); _video.attachCamera(_webcam); _capture = new Bitmap(new BitmapData(_width, _height, false, 0), PixelSnapping.AUTO, true); // setup ARToolkit _raster = new FLARRgbRaster(_width, _height); _detector = new FLARSingleMarkerDetector(_param, _code, _codeWidth); _detector.setContinueMode(true); dispatchEvent(new Event(Event.INIT)); } } }