My solution would be to use different variables for the the NativeSignals (nativeClicked, nativeRollOver, nativeRollOut, etc) and this would prevent the leak, but if this situation does occur then you could just use the view.removeEventListener(MouseEvent.CLICK, changeState), but then you have to rely on gc for the original signals being cleared.
But from what I'm seeing, I think you're trying to do the following:
public const signals : Vector.<NativeSignal> = new Vector.<NativeSignal>(3, true);
signals[0] = new NativeSignal(view, MouseEvent.CLICK, MouseEvent);
signals[0].add(changeState);
signals[1] = new NativeSignal(view, MouseEvent.ROLL_OVER, MouseEvent);
signals[1].add(overHandler);
signals[2] = new NativeSignal(view, MouseEvent.ROLL_OUT, MouseEvent);
signals[2].add(outHandler);
If this is the aim, I would suggest making a immutable class that has 3 getters for each NativeSignal and having a method on it to determine how many signals are used in total. (get numListeners())
(other options exist as well, this is just how I would do it.)
Cheers
si
var customArray:Array;
customArray = [view]
customArray[0].addEventListener(MouseEvent.CLICK...);
customArray = [view]
customArray[0].addEventListener(MouseEvent.MOUSE_DOWN...);
customArray = [view]
customArray[0].addEventListener(MouseEvent.MOUSE_UP...);
Which would behave in just the same way as the Signals do...
Stray