Not sure, but sounds like a scope chain is being stored in the .end() call.
On 5/15/12 5:36 AM, "dorkiedorkfromdorkt...@gmail.com" <dorkiedorkfromdorkt...@gmail.com> wrote: I've created a custom Effect called "EndEffect" that when played will call the end() method on the target effect sequence. I've tested this code in both the Effect.initInstance() call of the Effect and the EffectInstance.play() method: /** * @private */ override protected function initInstance(instance:IEffectInstance):void { super.initInstance(instance); var targetEffect:IEffect = effect || target as IEffect; targetEffect.end(); targetEffect = null; } In my declarations I have this code: <c:EndEffect id="explicitEndSequence" effect="{playerSequence}"/> The effect that this effect targets (playerSequence) has an effect end event listener like so: <s:Sequence id="player" effectEnd="trace('effect end')"> ... it contains 3 child effects </s:Sequence> With I play explicitEndSequence the console traces "effect end" 3 times: effect end effect end effect end Each subsequent calls it will show 3 more than the last (2nd call): effect end effect end effect end effect end effect end effect end If I change the EndEffect code so that it doesn't create a local variable it ends once correctly: /** * @private */ override protected function initInstance(instance:IEffectInstance):void { super.initInstance(instance); effect.end(); // this works! Btw "effect" is a property on EndEffect } Why does the first code cause a memory leak and not delete the instances? -- Alex Harui Flex SDK Team Adobe Systems, Inc. http://blogs.adobe.com/aharui