Lo pude conseguir, pero ahora estoy tratando de hacrlo mediante una transicion para que el cambio no sea tan brusco lo cual me está trayendo complicaciones.
Código :
Código:
import fl.transitions.*; import fl.transitions.easing.*; import flash.display.BitmapData; import flash.display.Bitmap; import flash.display.Sprite; import flash.events.*; import flash.display.Shape; import flash.events.Event; import VariableGlobal; VariableGlobal.vars.root = this; const WIDTH:Number = 600; const HEIGHT:Number = 450; var cam:Camera; var vid:Video; cam = Camera.getCamera(); cam.setMode(WIDTH,HEIGHT,15); vid = new Video(WIDTH,HEIGHT); if (cam!=null){ //Si cam no es null (que está funcando) vid.attachCamera(cam); }else{ trace("FAVOR DE CONECTAR SU WEBCAM Y SETEARLA"); } vid.filters = [new BlurFilter(10,10,1)]; var videoContainer:Sprite= new Sprite(); videoContainer.x= 0; videoContainer.y= 0; videoContainer.addChild(vid); /*addChild(videoContainer);*/ var empieza2:Timer = new Timer (4000); empieza2.addEventListener(TimerEvent.TIMER, dale); empieza2.start(); function dale(e:TimerEvent):void{ var miColor:ColorTransform=transform.colorTransform; if (!VariableGlobal.vars.colorGlobal){ miColor.color=0xFF0000; }else{ miColor.color=VariableGlobal.vars.colorGlobal; } clip.transform.colorTransform=miColor; var _stageBitmap:BitmapData; _stageBitmap = new BitmapData(stage.width, stage.height); _stageBitmap.draw(vid); var pix:uint = _stageBitmap.getPixel(300,300); trace(pix.toString(16)); // me sirve para entender var color0x:String = "0x" + pix.toString(16); VariableGlobal.vars.colorGlobal = color0x; var color2:uint = uint(color0x); VariableGlobal.vars.color2 = color2; trace(color2); function interpolateColor(start:ColorTransform, end:ColorTransform, t:Number):ColorTransform { var result:ColorTransform = new ColorTransform(); result.redMultiplier = start.redMultiplier + (end.redMultiplier - start.redMultiplier)*t; result.greenMultiplier = start.greenMultiplier + (end.greenMultiplier - start.greenMultiplier)*t; result.blueMultiplier = start.blueMultiplier + (end.blueMultiplier - start.blueMultiplier)*t; result.alphaMultiplier = start.alphaMultiplier + (end.alphaMultiplier - start.alphaMultiplier)*t; result.redOffset = start.redOffset + (end.redOffset - start.redOffset)*t; result.greenOffset = start.greenOffset + (end.greenOffset - start.greenOffset)*t; result.blueOffset = start.blueOffset + (end.blueOffset - start.blueOffset)*t; result.alphaOffset = start.alphaOffset + (end.alphaOffset - start.alphaOffset)*t; return result; } var startColor:ColorTransform = new ColorTransform(); var endColor:ColorTransform = new ColorTransform(); endColor.color = color2; // end color of red var tween:Tween = new Tween(clip, "", Strong.easeOut, 0, 1, 50); tween.addEventListener(TweenEvent.MOTION_CHANGE, tweenTransform); function tweenTransform(event:TweenEvent):void { // use tween position for interpolation of // start and end colors (value 0 - 1) clip.transform.colorTransform = interpolateColor(startColor, endColor, tween.position); } }
Con este codigo lo que me ocurre es que funciona bien excepto que vuelve siempre al color por default del simbolo movieclip que está en el stage cuyo nombre de instancia es 'clip' el cual es azul.. y lo que yo pretendo es que el color de inicio sea el último color adquirido.
¿En qué me estoy equivocando?