Ah, that makes perfect sense. That's exactly the explanation I was looking for. Thanks, Alex.
-Maciek -----Original Message----- From: Gordon Smith <[EMAIL PROTECTED]> Reply-To: flexcoders@yahoogroups.com To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] UIComponents as Object keys and Re-parenting Date: Wed, 28 May 2008 12:20:14 -0700 An Object stores key/value pairs where the key is a String. When you write map[foo] = "foo"; the 'foo' object gets automatically converted to a String, via its toString() method. UIComponents have a toString() method which produces a string indicating their location in the DisplayObject hierarchy, and this changes when you reparent a UIComponent. You probably want to use a Dictionary instead of an Object. A Dictionary can store key/value pairs where the key can be an object and doesn't get converted to a string. Gordon Smith Adobe Flex SDK Team ________________________________________________________________________ From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Maciek Sakrejda Sent: Wednesday, May 28, 2008 10:19 AM To: flexcoders Subject: [flexcoders] UIComponents as Object keys and Re-parenting I have a UIComponent (let's call it Foo) that extends Canvas. I'm trying to track various instances of this in an Object, mapping each instance to some String metadata. However, when I re-parent a Foo instance (by adding it to a new container), or I re-parent that parent container, it seems to be treated as a completely distinct key by the Object. For example var map:Object = new Object(); var foo:Foo = new Foo(); map[foo] = "foo"; for (var key:* in map) { // Output is something like 'key is Foo455' trace("key is " + key); } var bar:Bar = new Bar(); bar.addChild(foo); map[foo] = "re-parented foo" for (var key:* in map) { // Output is something like 'key is Foo455', 'key is Bar211.Foo455' trace("key is " + key); } Am I missing something? It seems like putting a reference to the object in a map should not changed when that object is re-parented. Is there any way to do what I'm looking for? What's the reasoning behind this behavior. -- Maciek Sakrejda Truviso, Inc. http://www.truviso.com