Re: [flexcoders] Re: How to tell when background image is clicked?
I'm afraid that doesn't do it either - the problem is, a Canvas with a backgroundImage style set will never be the target of a click event, the backgroundImage will always get in the way. I think I'm going to have to refactor the whole thing at this point... On Tue, Mar 17, 2009 at 3:51 PM, Tim Hoff timh...@aol.com wrote: Ok, maybe just check it's type: if (evt.target is FlexLoader) -TH --- In flexcoders@yahoogroups.com, Ken Dunnington ken.dunning...@... wrote: Hi Tim, unfortunately, that's exactly what happens :) If you apply a backgroundImage, the target of the click event will be the FlexLoader instance for that image, or in the case of a SWF, it'll be the actual SWF instance. To make matters worse, the background image is (as far as I've been able to tell) indistinguishable from a regular child, in that it counts towards numChildren's value, returns true on contains() and owns() etc. I'm looking through the SDK source to try to find exactly where it's added and how it manages to stay behind everything, but this is certainly puzzling. - Ken On Tue, Mar 17, 2009 at 2:36 PM, Tim Hoff timh...@... wrote: Hi Ken, I'm pretty sure that the target will never be the background image itself; but rather the Canvas. One hack is to check the type: if (evt.target is Canvas) -TH --- In flexcoders@yahoogroups.com, Ken Dunnington ken.dunnington@ wrote: I've got a custom component based on Canvas, and I'm programmatically setting its background-image style to a loaded SWF. I need to be able to differentiate between a click on the background, and a click on any of the other children. WIth no background set, I was using this code: private function clickHandler (evt:MouseEvent):void { if (evt.target == this) { setFocus(); dispatchEvent(new CanvasEvent(CanvasEvent.CLEAR_FOCUS)); } } WIth a background-image, however, this no longer works. I've also tried listening for the target phase, but the event never actually reaches the canvas object. I do have a separate ICollectionView instance containing all the other children, but I'd like to avoid having to use that for this handler, if possible.
[flexcoders] Re: How to tell when background image is clicked?
Hi Ken, I'm pretty sure that the target will never be the background image itself; but rather the Canvas. One hack is to check the type: if (evt.target is Canvas) -TH --- In flexcoders@yahoogroups.com, Ken Dunnington ken.dunning...@... wrote: I've got a custom component based on Canvas, and I'm programmatically setting its background-image style to a loaded SWF. I need to be able to differentiate between a click on the background, and a click on any of the other children. WIth no background set, I was using this code: private function clickHandler (evt:MouseEvent):void { if (evt.target == this) { setFocus(); dispatchEvent(new CanvasEvent(CanvasEvent.CLEAR_FOCUS)); } } WIth a background-image, however, this no longer works. I've also tried listening for the target phase, but the event never actually reaches the canvas object. I do have a separate ICollectionView instance containing all the other children, but I'd like to avoid having to use that for this handler, if possible.
Re: [flexcoders] Re: How to tell when background image is clicked?
Hi Tim, unfortunately, that's exactly what happens :) If you apply a backgroundImage, the target of the click event will be the FlexLoader instance for that image, or in the case of a SWF, it'll be the actual SWF instance. To make matters worse, the background image is (as far as I've been able to tell) indistinguishable from a regular child, in that it counts towards numChildren's value, returns true on contains() and owns() etc. I'm looking through the SDK source to try to find exactly where it's added and how it manages to stay behind everything, but this is certainly puzzling. - Ken On Tue, Mar 17, 2009 at 2:36 PM, Tim Hoff timh...@aol.com wrote: Hi Ken, I'm pretty sure that the target will never be the background image itself; but rather the Canvas. One hack is to check the type: if (evt.target is Canvas) -TH --- In flexcoders@yahoogroups.com, Ken Dunnington ken.dunning...@... wrote: I've got a custom component based on Canvas, and I'm programmatically setting its background-image style to a loaded SWF. I need to be able to differentiate between a click on the background, and a click on any of the other children. WIth no background set, I was using this code: private function clickHandler (evt:MouseEvent):void { if (evt.target == this) { setFocus(); dispatchEvent(new CanvasEvent(CanvasEvent.CLEAR_FOCUS)); } } WIth a background-image, however, this no longer works. I've also tried listening for the target phase, but the event never actually reaches the canvas object. I do have a separate ICollectionView instance containing all the other children, but I'd like to avoid having to use that for this handler, if possible.
[flexcoders] Re: How to tell when background image is clicked?
Ok, maybe just check it's type: if (evt.target is FlexLoader) -TH --- In flexcoders@yahoogroups.com, Ken Dunnington ken.dunning...@... wrote: Hi Tim, unfortunately, that's exactly what happens :) If you apply a backgroundImage, the target of the click event will be the FlexLoader instance for that image, or in the case of a SWF, it'll be the actual SWF instance. To make matters worse, the background image is (as far as I've been able to tell) indistinguishable from a regular child, in that it counts towards numChildren's value, returns true on contains() and owns() etc. I'm looking through the SDK source to try to find exactly where it's added and how it manages to stay behind everything, but this is certainly puzzling. - Ken On Tue, Mar 17, 2009 at 2:36 PM, Tim Hoff timh...@... wrote: Hi Ken, I'm pretty sure that the target will never be the background image itself; but rather the Canvas. One hack is to check the type: if (evt.target is Canvas) -TH --- In flexcoders@yahoogroups.com, Ken Dunnington ken.dunnington@ wrote: I've got a custom component based on Canvas, and I'm programmatically setting its background-image style to a loaded SWF. I need to be able to differentiate between a click on the background, and a click on any of the other children. WIth no background set, I was using this code: private function clickHandler (evt:MouseEvent):void { if (evt.target == this) { setFocus(); dispatchEvent(new CanvasEvent(CanvasEvent.CLEAR_FOCUS)); } } WIth a background-image, however, this no longer works. I've also tried listening for the target phase, but the event never actually reaches the canvas object. I do have a separate ICollectionView instance containing all the other children, but I'd like to avoid having to use that for this handler, if possible.