         for (i = 0; i < n; i++)
         {
             target = propChanges[i].target;
+            // TODO (chaase): should only capture values for targets of this effect.
+            // currently no easy way to determine this, since if we are
+            // running in a composite effect, that effect will create
+            // propertyChange targets for all effect children.
+            // Might want to change API of captureValues to specify the
+            // targets to iterate through
+            // For now, just make sure that we can transform the current target
+            // then go ahead and capture values for it
+            if (!(target is IUIComponent) && !(target is IGraphicElement))
+                continue;
             valueMap = setStartValues ? propChanges[i].start : propChanges[i].end;
             if (valueMap.translationX === undefined ||
                 valueMap.translationY === undefined ||

import mx.geom.TransformOffsets;
import mx.styles.IStyleClient;

import spark.effects.supportClasses.AnimateTransformInstance;

use namespace mx_internal;

import flash.geom.Vector3D;
import flash.utils.Dictionary;

import mx.core.IUIComponent;
import mx.core.mx_internal;
import mx.effects.Effect;
import mx.effects.IEffectInstance;
