I’m still working on my zoomable node-graph project. I’m currently having problems with what I know must be relatively easy, but have been unable to find a solution to:
I have numerous objects, many of them are stored within other objects (and overlap in physical space). As I zoom into an object, it begins to fade away. At the moment it begins to fade, I load in the child object (or create a child object if one doesn’t exist). I want to turn off the parent object’s ability to respond to most events. The exception is the scroll wheel, which needs to be sent to both objects simultaneously so that the parent can continue to fade out as I zoom farther in. Try as I might, I can’t find a way to tell Flex “hey, for right now dispatch these types of events ONLY to this object.” I either end up with event dispatch stack overflows from trying to manually redirect the events, or I get events that don’t activate at the correct time or on the correct object. What can I do?
You can’t turn off an objects ability to respond to events.
You can write code to remove all event listeners inside that object; although I suspect this will be a manual process.
You can remove that object from the display list so its event listeners won’t trigger on events in their capture or bubbling phases. If this object has children that you want to display this won’t work.
You may be able to work something out where the ‘child’ object calls stopPropogation() and/or stopImmediatePropogation() in it’s own event listeners. I believe this could prevent the handlers from firing in the parent, but it may depend how your listeners are set up. I do not believe this will have an effect if you are listening in the capture phrase.
You may be able to write “aware” event handlers that basically say:
I’m running out if ideas. But, I’m pretty sure there is no way to universally say “Don’t let this component respond to events”