I should have pointed out I was talking specifically about the 
custom floating toolbar you mentioned in point 2 of your original 
post.  It seems to me your toolbar is handling events from other 
components when it shouldn't.  Try putting the event.target test 
into your toolbar code; no need to put it into any other components.

Doug

--- In flexcoders@yahoogroups.com, "Tony Pujals" <[EMAIL PROTECTED]> wrote:
>
> Thanks for the tip, Doug ... the only problem is that I want the 
toolbar to be a generic component that doesn't require any specially 
awareness from other components in the form. I don't want to mandate 
that other programmers have to modify their event-handling code just 
to accommodate my toolbar weirdness....  I'm a little surprised this 
has turned out to be so challenging. Since I know various components 
provided by Macromedia (such as Button) do behave correctly, I guess 
that there is a 'standardized' way to implement this....
> 
> 
> 
> tony pujals| senior engineer | Yahoo! SiteBuilder Express
> p. 408.349.6284 | e. tonyp * yahoo-inc . com | y!id tonypujals
> 
> ________________________________________
> From: flexcoders@yahoogroups.com 
[mailto:[EMAIL PROTECTED] On Behalf Of Doug Lowder
> Sent: Wednesday, February 15, 2006 11:02 AM
> To: flexcoders@yahoogroups.com
> Subject: [flexcoders] Re: Mouse Event Filtering
> 
> Tony, I had a similar problem in Flex 1.5 with a custom 
TitleWindow 
> component that was receiving events from objects underneath it.  
> Never did find out exactly why that was happening; non-100% alpha 
> value, perhaps?  Anyway, I solved it by wrapping a simple check 
> around the event handler that makes sure the target property of 
the 
> event is the current object: 
> 
> if (event.target == this) { // handle the event... }
> 
> It might be worth trying that somewhere, like in a delegate for 
the 
> mouseMove event or in handleEvent().
> 
> Hope that's of some help.
> 
> Doug
> 
> 
> --- In flexcoders@yahoogroups.com, "Tony Pujals" <tonyp@> wrote:
> >
> > Well, the Flash asdocs really don't make this clear, but I 
> initially had a suspicion that overriding a handler instead of 
> registering a listener might be the answer. I didn't pursue that 
> direction right away because the method signatures don't return a 
> Boolean or some other value to indicate that an event was handled 
> and no further processing is wanted.
> > 
> > In any case, I was able to achieve the glass pane effect that I 
> wanted this morning with the following code:
> > 
> > 
> >       options = { width: "100%", height: "100%"};
> >       Canvas(createChild(Canvas, "_glassPane", options));
> >       _glassPane.setStyle("backgroundColor", "#FF00FF");
> >       _glassPane.alpha = 0;
> >       _glassPane.visible = false;
> > 
> >       MovieClip(_glassPane).onPress = function() {}
> > 
> > 
> > All of the above was required: without a backgroundColor being 
> set, events weren't captured at all; The alpha, of course, was to 
> make the glass pane actually invisible (there maybe other 
properties 
> beside backgroundColor that also work for causing events to get 
> caught, but I haven't experimented). The visible property -- once 
a 
> backgroundColor property is set -- is what enables and disables 
the 
> event capturing.
> > 
> > 
> > However, for the toolbar that I also wanted to capture events so 
> the text component below doesn't receive them, this is not yet a 
> complete solution because it also prevents the child components 
(the 
> toolbar buttons) from getting any events either. I've written some 
> code to iterate the child components, but I don't know what to 
pass 
> to them -- it seems intrinsically wrong that the toolbar needs to 
> become an event manager from its onPress handler:
> > 
> > // doesn't work -- onPress doesn't have event parameter anyway...
> > 
> > MovieClip(this).onPress = mx.utils.Delegate.create(this, function
> (event) {
> >   var comp : UIObject = null;
> >   for (var i : Number = 0; i < childDescriptors.length; i++) {
> >     comp = getChildAt(i);
> >     if (hitTest(comp)) {
> >       comp.handleEvent(event);
> >     }
> >   }
> > });
> > 
> > (Incidentally, if there is some other more appropriate way for 
> iterating child components, I'd appreciate hearing about it).
> > 
> > So Flash/Flex gurus ... what am I missing here...? Thanks!
> > 
> > Tony
> > 
> > tony pujals| senior engineer | Yahoo! SiteBuilder Express
> > p. 408.349.6284 | e. tonyp * yahoo-inc . com | y!id tonypujals
> > 
> > ________________________________________
> > From: Tony Pujals 
> > Sent: Wednesday, February 15, 2006 7:43 AM
> > To: 'flexcoders@yahoogroups.com'
> > Subject: RE: [flexcoders] Mouse Event Filtering
> > 
> > Sorry, I don't know if this works in the Flex 2 beta, but I 
should 
> have specified that we're working with Flex 1.5 at Yahoo. 
> Unfortunately, EventDispatcher states:
> > 
> >                 function addEventListener(eventType:String, 
> eventListener):Void
> >                 {
> >                                 // Note: In the future, we may 
add 
> a third parameter,
> >                                 // useCapture:Boolean, to be 
> compliant with the
> >                                 // DOM Level 3 Events spec,
> >                                 // http://www.w3.org/TR/DOM-
Level-
> 3-Events/events.html.
> >                                 .
> >                                 .
> >                                 .
> > 
> > This would have been very convenient if it were implemented. 
> Nevertheless, Button and other components do seem able to capture 
> the event. Is this a question for one of the Flash lists (any 
> recommendation to which list I should post this question)?
> > 
> > Thanks, Matt - if you or anyone else has any other ideas, I'd 
> really love to hear them
> > 
> > -Tony
> > 
> > 
> > 
> > tony pujals| senior engineer | Yahoo! SiteBuilder Express
> > p. 408.349.6284 | e. tonyp * yahoo-inc . com | y!id tonypujals
> > ________________________________________
> > From: flexcoders@yahoogroups.com 
> [mailto:[EMAIL PROTECTED] On Behalf Of Matt Chotin
> > Sent: Tuesday, February 14, 2006 9:45 PM
> > To: flexcoders@yahoogroups.com
> > Subject: RE: [flexcoders] Mouse Event Filtering
> > 
> > you want to add your mouse event listener with useCapture set to 
> true
> > and then call stopPropagation on the event in your handler (I 
> think).  I
> > believe that will prevent it from moving further down the 
> hierarchy.
> > 
> > -----Original Message-----
> > From: flexcoders@yahoogroups.com 
> [mailto:[EMAIL PROTECTED] On
> > Behalf Of Tony Pujals
> > Sent: Tuesday, February 14, 2006 5:27 PM
> > To: flexcoders@yahoogroups.com
> > Subject: [flexcoders] Mouse Event Filtering
> > 
> > There are two variations to my question, but they should share a 
> common
> > solution:
> > 
> > 1) I want to create a "glass pane" - ie, a transparent layer 
that 
> can
> > capture/consume mouse events without allowing the event to 
bubble 
> to a
> > component below it. I've tried to achieve this effect with a 
> transparent
> > Canvas, but the component below it (eg, a TextArea), also 
catches 
> the
> > event.
> > 
> > 2) I have a floating toolbar that extends Canvas. I don't want 
to 
> use
> > the PopUpManager because of issues with the FocusManager and 
> TextArea
> > that causes text to be selected incorrectly when focus is 
returned 
> after
> > focus was transferred to a toolbar button. If the toolbar is 
> floating
> > above the TextArea component, the cursor changes to an ibeam. If 
I 
> click
> > down on the toolbar to drag it, the toolbar drags, but the 
> TextArea also
> > gets the events, causing text to become selected. I want the 
> toolbar to
> > consume the mouse events occurring on it without any further 
event
> > bubbling.
> > 
> > 
> > Since the toolbar has a mouseMove handler that allows me to drag 
> it, I
> > can drag even by pressing mouse down on a toolbar button. I 
guess 
> the
> > toolbar as parent is receiving and handling the mousedown, even 
> though
> > the mouse down event is also propagating to its child button 
> component
> > as well (I actually do not want this behavior either, but I 
> suppose I
> > can solve this easily enough with hitTest). But what is really
> > interesting is that the event stops there if it's caught by the 
> button
> > -- the TextArea below the toolbar doesn't get the event in this 
> case. So
> > something about a Button or its superclasses makes it special, 
but 
> the
> > difference isn't apparent to me in the AS source provided with 
> Flex.
> > 
> > Any insight is appreciated. Thanks!
> > 
> > -Tony
> > 
> > 
> > 
> > tony pujals| senior engineer | Yahoo! SiteBuilder Express
> > p. 408.349.6284 | e. tonyp * yahoo-inc . com | y!id tonypujals
> > 
> > 
> > 
> > 
> > 
> > --
> > Flexcoders Mailing List
> > FAQ: 
> http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> > Search Archives:
> > http://www.mail-archive.com/flexcoders%40yahoogroups.com 
> > Yahoo! Groups Links
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > --
> > Flexcoders Mailing List
> > FAQ: 
> http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> > Search Archives: http://www.mail-archive.com/flexcoders%
> 40yahoogroups.com 
> > 
> > SPONSORED LINKS 
> > Web site design development 
> > Computer software development 
> > Software design and development 
> > Macromedia flex 
> > Software development best practice 
> > 
> > 
> > ________________________________________
> > YAHOO! GROUPS LINKS 
> > 
> > *  Visit your group "flexcoders" on the web.
> >   
> > *  To unsubscribe from this group, send an email to:
> > [EMAIL PROTECTED]
> >   
> > *  Your use of Yahoo! Groups is subject to the Yahoo! Terms of 
> Service. 
> > 
> > ________________________________________
> >
> 
> 
> 
> 
> 
> 
> 
> --
> Flexcoders Mailing List
> FAQ: 
http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> Search Archives: http://www.mail-archive.com/flexcoders%
40yahoogroups.com 
> 
> 
> SPONSORED LINKS 
> Web site design development 
> Computer software development 
> Software design and development 
> Macromedia flex 
> Software development best practice 
> 
> 
> ________________________________________
> YAHOO! GROUPS LINKS 
> 
> *  Visit your group "flexcoders" on the web.
>   
> *  To unsubscribe from this group, send an email to:
> [EMAIL PROTECTED]
>   
> *  Your use of Yahoo! Groups is subject to the Yahoo! Terms of 
Service. 
> 
> ________________________________________
>







--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to