Tim, I would need to test it out, but off the top of my head I don't think binding would do the job. Let's say Sprite A was scaled up. Even though Sprite C's coordinates in relation to UIComponent B have changed, its actual coordinates in relation to Sprite B (its parent) have not changed, therefore I don't think any bindings would trigger.
Alex, that would work. I won't be able to just watch the event coming from Sprite C since it may actually be one of its parents that changes its scale or position, but if I take a broader approach of where I watch for bubbling events I think it would do the trick. Its unfortunate I can't do it just with regular sprites but I guess that's why they're lightweight. Thanks guys. I don't want to use much more of your time. I really appreciate your input and you've given me some good fuel to work with. Aaron On Thu, May 7, 2009 at 11:40 PM, Tim Hoff <timh...@aol.com> wrote: > > > > This all sounds like overkill; since you are really only interested in > UIComponentB knowing the position of SpriteC. If you make SpriteC > public, is it possible to bind the x/y values for UIComponentB to > uiComponentA.spriteC.x and y (localToContent)? > > -TH > > > --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, Alex > Harui <aha...@...> wrote: > > > > If you can use a subclass of Sprite that dispatches the events you > need, that will be the least expensive solution in terms of CPU usage. > If you can't use a subclass or you won't have so many Sprites that > polling will matter, polling will probably be sufficient. > > > > Alex Harui > > Flex SDK Developer > > Adobe Systems Inc.<http://www.adobe.com/> > > Blog: http://blogs.adobe.com/aharui > > > > From: flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com> [mailto: > flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>] > On Behalf Of Tim Hoff > > Sent: Thursday, May 07, 2009 9:32 PM > > To: flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com> > > Subject: [flexcoders] Re: Tracking a sprite's position > > > > > > > > > > > > My thought was that since all of the Sprites of UIComponentA were > > children, they would invalidate the display list of UIComponentA > > whenever they were changed. I forget that Sprites are their own beast. > > If you can't find a way to listen for changes to all of the Sprite's > > position/size, and trigger action on the common canvas, enterframe > > starts to sound more and more appealing. I'm still wondering though, > > what you plan to do onEnterFrame, in order to re-position > UIComponentB. > > For a parent or sibling to know about a component's state (or it's > > children), events and public vars/methods are usually employed. I'm > > interested to hear what you end up doing for this edge-case. > > Challenging for me, I can say. > > > > -TH > > > > --- In > flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto: > flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>, Aaron > > Hardy aaronius9er@ wrote: > > > > > > What would be invalidating UIComponent A's display list? It's my > > > understanding that if Sprite B were to be scaled (which is > likely--it > > is > > > a graphic editing app afterall) but not Sprite A, the display list > of > > > UIComponent A would never be invalidated, so updateDisplayList > > wouldn't > > > be called in that case. The same is true if Sprite C were scaled or > > > moved but not any members of its parent chain. Yet UIComponent B > still > > > needs to stay stuck to Sprite C. Again, I definitely could be wrong. > > > > > > I guess the simple answer would be to make any tool or button or > > > anything that scales or moves anything inside UIComponent A trigger > > > UIComponent B to update its location, but I can already think of > quite > > a > > > fiew places that would have to happen and it seems like future > > > developers would intrinsically have to know that if they make a new > > tool > > > that modifies the position/scale of any of the elements that they > need > > > to trigger UIComponent B to update its position. Ugh. That's what > I'm > > > trying to avoid. > > > > > > Keep 'em coming if you've got 'em. It's not a dire situation so I'll > > > save my dire need credits for later if needed. :) > > > > > > Aaron > > > > > > Tim Hoff wrote: > > > > > > > > > > > > > > > > Actually, in thinking about it a bit more, why not dispatch a > custom > > > > event in the updateDisplayList function of UIComponentA; that > > contains > > > > the coordinates of SpriteC. This will happen a lot less frequently > > than > > > > listening for the enterFrame event. > > > > > > > > -TH > > > > > > > > --- In > flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto: > flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>> > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>>, > "Tim Hoff" TimHoff@ wrote: > > > > > > > > > > > > > > > Batting .000 so far. The only other thing that I can think of, > is > > to > > > > > move UIComponentB into UIComponnentA, same level as SpriteC, and > > bind > > > > > the position of UIComponentB to the x and y (plus any offset) of > > > > > SpriteC. Sorry that I couldn't have offered more useful help. It > > > > > sounds like you have an interesting use-case. Good luck Aaron. > > > > > > > > > > -TH > > > > > > > > > > --- In > flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto: > flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>> > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>>, > Aaron Hardy aaronius9er@ > > wrote: > > > > > > > > > > > > Unfortunately that isn't a great option in our case. The > sprite > > in > > > > > > question is part of a graphical editor where dozens and dozens > > of > > > > > > sprites may be on the stage and they only provide a simple > > graphical > > > > > > representation so converting them to uicomponents would > probably > > be > > > > > more > > > > > > overkill than watching the sprite's position on each > > enter_frame. If > > > > > > you come up with any other ideas, please let me know. > > > > > > > > > > > > Aaron > > > > > > > > > > > > Tim Hoff wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > No, you're right. My suggestion was more theoretical more > than > > > > > anything > > > > > > > else. You may need to change the Sprites to UIComponents; to > > get > > > > > those > > > > > > > events. > > > > > > > > > > > > > > -TH > > > > > > > > > > > > > > --- In > flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto: > flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>> > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com> > > > > > > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>>, > Aaron Hardy > > aaronius9er@ > > > > > > > wrote: > > > > > > > > > > > > > > > > Maybe I'm missing something really fundamental then; I > > didn't > > > > > think > > > > > > > > Sprites dispatched move and size events and the > > documentation > > > > > doesn't > > > > > > > > show any such events either. I'll do some more research > > later, > > > > but > > > > > > > > please correct me if you know something I don't. > > > > > > > > > > > > > > > > Thanks for the response. > > > > > > > > > > > > > > > > Aaron > > > > > > > > > > > > > > > > Tim Hoff wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Using enterFrame is pretty expensive. I'd probably > listen > > for > > > > > > > SpriteC's > > > > > > > > > move and resize events in the common canvas and position > > > > > > > UIComponentB; > > > > > > > > > based on the event.currentTarget.x and y coordinates. > The > > > > events > > > > > > > will > > > > > > > > > have to be bubbled up from SpriteC to UIComponentA to > the > > > > common > > > > > > > canvas. > > > > > > > > > Use localToGlobal to find the desired coordinates to > > position > > > > > > > > > UIComponentB. You might experience a little lag; so the > > two > > > > may > > > > > not > > > > > > > > > look like they are connected though. > > > > > > > > > > > > > > > > > > -TH > > > > > > > > > > > > > > > > > > --- In > flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto: > flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>> > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com> > > > > > > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com> > > > > > > > > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>>, > Aaron Hardy > > > > aaronius9er@ > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > Hey flexers, > > > > > > > > > > > > > > > > > > > > I have Sprite C which is inside of Sprite B which is > > inside > > > > of > > > > > > > Sprite > > > > > > > > > A > > > > > > > > > > which is inside of UIComponent A. UIComponent A and > > > > > UIComponent B > > > > > > > are > > > > > > > > > > both children of a common Canvas. I need UIComponentB > to > > > > > always be > > > > > > > > > > positioned over the top-left of Sprite C (so it > appears > > to > > > > be > > > > > > > stuck to > > > > > > > > > > Sprite C). ALWAYS. So if Sprite C is scaled or moved, > if > > > > > Sprite B > > > > > > > is > > > > > > > > > > scaled or moved, if Sprite A is scaled or moved, if > > > > > UIComponent A > > > > > > > is > > > > > > > > > > scaled or moved or ANYTHING happens that would affect > > Sprite > > > > > C's > > > > > > > > > > position, I need UIComponent B to always follow its > > > > position. > > > > > Is > > > > > > > there > > > > > > > > > > a good way to do this? My first thought is to poll > > SpriteC's > > > > > > > > > > coordinates on every enterFrame event, but it seems > like > > it > > > > > might > > > > > > > be > > > > > > > > > > overkill. Thoughts? > > > > > > > > > > > > > > > > > > > > Thanks! > > > > > > > > > > > > > > > > > > > > Aaron > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >