Hola a tod@s, he estado intentando realizar una aplicación de realidad aumentada con detección de color tengo algo de código y tome como referencia esta pagina Color Tracking, las modificaciones que he intentado hacer están en este link Descarga, lo que quiero es que no me muestre un punto como originalmente sino que deseo reproducir un .SWF, alguien me podrían indicar que estoy haciendo mal? si de pronto conocen otra alternativa de detección de color me gustaría experimentar con ella. Gracias!!!!!!!!!!!!!!

dejo el codigo del metodo que detecta el color, por si alguie depronto me puedes colaborar detectando donde estoy modificando mal el codigo debido a que no se muestra la animacion cuando lo ejecuto.

Código ActionScript :

   package playground.src.video{
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.events.TimerEvent;
        import flash.geom.Point;
        import flash.media.Camera;
        import flash.media.Video;
        import flash.system.Capabilities;
        import flash.system.System;
        import flash.utils.Timer;
        import flash.net.URLRequest;
        import flash.net.URLLoader;
        import flash.display.*;
        import playground.src.loop.Loop;
     
        public class ColorTracker extends Sprite {
            private var _trackedcolor:uint;
            private var _treshold:uint;
            private var _circle:Sprite;
            //variables agregadas
            private var _urlloader:URLRequest;
            private var _myLoader:Loader;
            //
            private var _tick:Timer;
            private var _pos:Point;
            private var _bmd:BitmapData;
            private var _bmp:Bitmap;
            private var _cam:Camera;
            private var _width:int;
            private var _height:int;
            private var _yposarray:Array;
            private var _xposarray:Array;
            private var _vid:Video;
            private var _loop:Loop;
            private var _avgpos:Point;
     
            public var publicpos:Point;
            public var showcircle:Boolean;
     
            public function ColorTracker(width:int ,height:int, colorToTrack:uint, treshold:uint){
                _width=width;
                _height=height;
                _trackedcolor=colorToTrack;
                _treshold=treshold;
                init();
            }
     
            private function init():void {
                publicpos=new Point(0,0);
                _avgpos=new Point(0,0);
                _pos=new Point(0,0);
     
                var index:int=0;
     
                for (var i : int = 0; i < Camera.names.length; i++) {
                    if (Camera.names[i]=="USB Video Class Video") {
                        index=i;
                    }
                }
     
                _cam=Camera.getCamera(String(index));
                _cam.setMode(_width, _height, 30);
                _vid=new Video(_width,_height);
                _vid.attachCamera(_cam);
                _vid.smoothing=true;
                _bmd=new BitmapData(_width,_height);
                _bmp=new Bitmap(_bmd);
     
                addChild(_bmp);
     
                _loop = new Loop();
                _loop.addTask(render, "renderID");
                addChild(_loop);
     
                drawCircle();
                _tick=new Timer(1000);
                _tick.addEventListener(TimerEvent.TIMER, average);
                _tick.start();
     
                _xposarray = new Array();
     
                addEventListener(MouseEvent.CLICK, onClick);
                //evento objeto _myLoader
                _myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
            }
     
            private function moveCircle():void {
     
            }
     
            public function average(e:TimerEvent):Point {
                _avgpos=_pos;
                trace(_avgpos);
                return _avgpos;
            }
     
            private function onClick(e:MouseEvent):void {
                getColorFromMousePos();
            }
     
            private function getColorFromMousePos():void {
                _trackedcolor=_bmd.getPixel(stage.mouseX,stage.mouseY);
                removeChild(_circle);
                //Lineas agregadas
                    _myLoader.unload();
                //
                drawCircle();
            }
     
            private function render():void {
                _circle.x += (_avgpos.x - _circle.x)/10;
                _circle.y += (_avgpos.y - _circle.y)/10;
                trackColor();
                _bmd.draw(_vid);
            }
     
            private function drawCircle():void {
                _circle = new Sprite();
                //Lineas suprimidas
                    //_circle.graphics.beginFill(_trackedcolor, 1);
                    //_circle.graphics.drawCircle(0, 0, 12);
                    //_circle.graphics.endFill();
     
                //Lineas agregadas
                    loadSWF();
            }
     
            //Lineas agregadas
                private function loadSWF():void {
                    _myLoader = new Loader();
                    _urlloader=new URLRequest("ExternalSWF.swf");
                    _myLoader.load(_urlloader);
                    trace("loadSWF");
                }
     
                function loadComplete(event:Event):void {
                    _circle.addChild(_myLoader);
                    addChild(_circle);
                    trace("COMPLETADO");
                }
            //
            public function trackColor():Point {
     
                for (var i = 0; i < 320; i++) {
                    for (var j = 0; j < 240; j++) {
                        if (_bmd.getPixel(i,j)< =_trackedcolor+3200&&_bmd.getPixel(i,j) >=_trackedcolor-3200) {
                            _pos.x=i;
                            _pos.y=j;
                            publicpos=_pos;
                        }
                    }
                }
                return _pos;
            }
        }
    }