Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/12/2012, 14:25
lionel1989
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 43
Antigüedad: 11 años, 7 meses
Puntos: 0
problema usando colorTransform

Buenas tardes. Estoy trabajando con un archivo de flash que lo que hace cada 4 segundos es llevarse el dato de color de uno de los pixeles de lo que está siendo capturado por la webcam y pasarselo a un movieclip que tomará dicho color.

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?