RE: [flexcoders] AS 3.0 event target problem!!!
I have been down this rocky road of recording indexes of where the nodes are in respect to their parent node but this did not work and this is why. In order for me to get a meaningful path went from event.target node that was clicked all the way to its root (stage) and constructed a path based on the where the child node is, so I can parse the sting of number and just use get childAt(). This DID NOT work and the reason is that the DOM like tree in Flash is not rendered the same during my record phase and my replay phase. The reason for this is ‘mouseCatcher’ since I do not use the mouse in replay this is not created as a child object hence throwing of the DOM like tree so my child positions are off. Is there any way to hack the systemManager or somehow uniquely indentify the controls in the .swf that I do not have to be dependent on the instance of the .swf. Any help on this or even a pointer to the right direction will be greatly appreciated… --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED], flexcoders@yahoogroups.com Date: Wednesday, August 13, 2008, 3:59 PM Well, you can use getChildAt() and assume indexes (they are less likely to change). You can subclass the components and walk their trees assigning names From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 2:54 PM To: [EMAIL PROTECTED] ups.com ; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Yep I thought you did something like that for the numbering and that is definitely not going to work. In terms of walking the tree and assigning names this will not work either since one of my requirements (It sucks to be me…) is to use my path or control name (that I just got from clicking on a button lets say) on a different instance of the .swf and this new instance will not have those names that I will generate. Is there any way that I can associate a control on the .swf with some type of identifier that can be used at a different instance of the .swf and select that control. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] com, [EMAIL PROTECTED] ups.com Date: Wednesday, August 13, 2008, 2:40 PM Hmm. I thought the name property of every sprite was filled out. You could certainly walk the tree and find things with no name and give them names. The numbering has to do with when it got instantiated. The ConfirmScreen was the 388th thing, UIComponent was the 418th, etc. But one UI change or timing glitch can change those numbers. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 2:21 PM To: [EMAIL PROTECTED] ups.com ; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! What happens when the object does not have a name (or it does not have a static name) like the close button that I mentioned below? Also can you share something on how the numbering schema works (ConfirmScreen388. UIComponent418. Button422), maybe I can match the numbering somehow that if that information is publicly available. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] com, [EMAIL PROTECTED] ups.com Date: Wednesday, August 13, 2008, 12:53 PM The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 9:40 AM To: [EMAIL PROTECTED] ups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388. UIComponent418. Button422) , is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe. com/2006/ mxml layout=vertical close=PopUpManager. removePopUp
RE: [flexcoders] AS 3.0 event target problem!!!
MouseCatcher gets created no matter what, but using indexes can be fragile. Your choices are index and/or names, or what we did, is make sure there is a variable dot-path expression to most everything and use indexes where there wasn't. It provided more stability, but isn't perfect. We also don't use dot-path expressions for mouse targeting since, if some bug accidentally overlays the original mouse target, your playback wouldn't catch that. We use getObjectsUnderPoint instead. From: Zoran Avramov [mailto:[EMAIL PROTECTED] Sent: Thursday, August 14, 2008 10:59 AM To: flexcoders@yahoogroups.com; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! I have been down this rocky road of recording indexes of where the nodes are in respect to their parent node but this did not work and this is why. In order for me to get a meaningful path went from event.target node that was clicked all the way to its root (stage) and constructed a path based on the where the child node is, so I can parse the sting of number and just use get childAt(). This DID NOT work and the reason is that the DOM like tree in Flash is not rendered the same during my record phase and my replay phase. The reason for this is 'mouseCatcher' since I do not use the mouse in replay this is not created as a child object hence throwing of the DOM like tree so my child positions are off. Is there any way to hack the systemManager or somehow uniquely indentify the controls in the .swf that I do not have to be dependent on the instance of the .swf. Any help on this or even a pointer to the right direction will be greatly appreciated... --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED], flexcoders@yahoogroups.com Date: Wednesday, August 13, 2008, 3:59 PM Well, you can use getChildAt() and assume indexes (they are less likely to change). You can subclass the components and walk their trees assigning names From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 2:54 PM To: [EMAIL PROTECTED] ups.com ; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Yep I thought you did something like that for the numbering and that is definitely not going to work. In terms of walking the tree and assigning names this will not work either since one of my requirements (It sucks to be me...) is to use my path or control name (that I just got from clicking on a button lets say) on a different instance of the .swf and this new instance will not have those names that I will generate. Is there any way that I can associate a control on the .swf with some type of identifier that can be used at a different instance of the .swf and select that control. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] com, [EMAIL PROTECTED] ups.com Date: Wednesday, August 13, 2008, 2:40 PM Hmm. I thought the name property of every sprite was filled out. You could certainly walk the tree and find things with no name and give them names. The numbering has to do with when it got instantiated. The ConfirmScreen was the 388th thing, UIComponent was the 418th, etc. But one UI change or timing glitch can change those numbers. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 2:21 PM To: [EMAIL PROTECTED] ups.com ; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! What happens when the object does not have a name (or it does not have a static name) like the close button that I mentioned below? Also can you share something on how the numbering schema works (ConfirmScreen388. UIComponent418. Button422), maybe I can match the numbering somehow that if that information is publicly available. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] com, [EMAIL PROTECTED] ups.com Date: Wednesday, August 13, 2008, 12:53 PM The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 9:40 AM To: [EMAIL PROTECTED] ups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has
RE: [flexcoders] AS 3.0 event target problem!!!
Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388.UIComponent418.Button422), is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe.com/2006/mxml; layout=vertical close=PopUpManager.removePopUp(this) showCloseButton=true Thanks, Zoran --- On Tue, 8/12/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: flexcoders@yahoogroups.com Date: Tuesday, August 12, 2008, 9:38 PM He’s surprised that the popup isn’t parented by the app. Popups are parented by the systemMgr which also parents the app. Id’s are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: [EMAIL PROTECTED] ups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: [EMAIL PROTECTED] ups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am attaching listeners to all the click events and then printing out event.target to keep track of my events and where we clicked, nothing revolutionary here very easy stuff. Once I get the paths I would like to run code that will execute my steps and play the clicks back based on the event.target information that I got and I was able to do that except when we have popups. Here is the problem: When I execute a click on a button with event.target = DataEntry0._ UpdateDeleteProd 1.Form10. FormItem102. HBox103.Button10 4 A poupup appears and then I click on the close button on that popup with event.target= ConfirmScreen464. UIComponent494. Button498 COUPLE OF PROBLEMS HERE: 1) I don't have the path to the root (DataEntry0) even though I use the standard event.target. 2) This is even a bigger problem, the DOM path (ConfirmScreen464. UIComponent494. Button498) is dynamically generated (the numbers are dynamically generated) so when I use that path that I got during the time I was monitoring the app, when I use my code to play the events that very same target does not correspond to the popup that the fist event caused. I tried using IDs but in Flex I have not found anything like document.getElement ById() that is available in JavaScript. Any help on this will be greatly appreciated. Thanks p.s. I looked at the automation library that Flex has (and Mercury QTP uses) but that will not work for me.
RE: [flexcoders] AS 3.0 event target problem!!!
The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 13, 2008 9:40 AM To: flexcoders@yahoogroups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388.UIComponent418.Button422), is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe.com/2006/mxml; layout=vertical close=PopUpManager.removePopUp(this) showCloseButton=true Thanks, Zoran --- On Tue, 8/12/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: flexcoders@yahoogroups.com Date: Tuesday, August 12, 2008, 9:38 PM He’s surprised that the popup isn’t parented by the app. Popups are parented by the systemMgr which also parents the app. Id’s are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: [EMAIL PROTECTED] ups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: [EMAIL PROTECTED] ups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am attaching listeners to all the click events and then printing out event.target to keep track of my events and where we clicked, nothing revolutionary here very easy stuff. Once I get the paths I would like to run code that will execute my steps and play the clicks back based on the event.target information that I got and I was able to do that except when we have popups. Here is the problem: When I execute a click on a button with event.target = DataEntry0._ UpdateDeleteProd 1.Form10. FormItem102. HBox103.Button10 4 A poupup appears and then I click on the close button on that popup with event.target= ConfirmScreen464. UIComponent494. Button498 COUPLE OF PROBLEMS HERE: 1) I don't have the path to the root (DataEntry0) even though I use the standard event.target. 2) This is even a bigger problem, the DOM path (ConfirmScreen464. UIComponent494. Button498) is dynamically generated (the numbers are dynamically generated) so when I use that path that I got during the time I was monitoring the app, when I use my code to play the events that very same target does not correspond to the popup that the fist event caused. I tried using IDs but in Flex I have not found anything like document.getElement ById() that is available in JavaScript. Any help on this will be greatly appreciated. Thanks p.s. I looked at the automation library that Flex has (and Mercury QTP uses) but that will not work for me.
RE: [flexcoders] AS 3.0 event target problem!!!
Hmm. I thought the name property of every sprite was filled out. You could certainly walk the tree and find things with no name and give them names. The numbering has to do with when it got instantiated. The ConfirmScreen was the 388th thing, UIComponent was the 418th, etc. But one UI change or timing glitch can change those numbers. From: Zoran Avramov [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 13, 2008 2:21 PM To: flexcoders@yahoogroups.com; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! What happens when the object does not have a name (or it does not have a static name) like the close button that I mentioned below? Also can you share something on how the numbering schema works (ConfirmScreen388. UIComponent418. Button422), maybe I can match the numbering somehow that if that information is publicly available. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED], flexcoders@yahoogroups.com Date: Wednesday, August 13, 2008, 12:53 PM The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 13, 2008 9:40 AM To: flexcoders@yahoogroups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388.UIComponent418.Button422), is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe.com/2006/mxml http://www.adobe.com/2006/mxml layout=vertical close=PopUpManager.removePopUp(this) showCloseButton=true Thanks, Zoran --- On Tue, 8/12/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: flexcoders@yahoogroups.com Date: Tuesday, August 12, 2008, 9:38 PM He’s surprised that the popup isn’t parented by the app. Popups are parented by the systemMgr which also parents the app. Id’s are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: [EMAIL PROTECTED] ups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: [EMAIL PROTECTED] ups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am attaching listeners to all the click events and then printing out event.target to keep track of my events and where we clicked, nothing revolutionary here very easy stuff. Once I get the paths I would like to run code that will execute my steps and play the clicks back based on the event.target information that I got and I was able to do that except when we have popups. Here is the problem: When I execute a click on a button with event.target = DataEntry0._ UpdateDeleteProd 1.Form10. FormItem102. HBox103.Button10 4 A poupup appears and then I click on the close button on that popup with event.target= ConfirmScreen464. UIComponent494. Button498 COUPLE OF PROBLEMS HERE: 1) I don't have the path to the root (DataEntry0) even though I use the standard event.target. 2) This is even a bigger problem, the DOM path (ConfirmScreen464. UIComponent494. Button498) is dynamically generated (the numbers are dynamically generated) so when I use
RE: [flexcoders] AS 3.0 event target problem!!!
If you assign an id, the name is the id. But if you don't assign an id, the name is set to the class name concatenated with an incrementing counter value, to ensure uniqueness. Look at the following file: http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils//NameUtil.as The counter is simply a static var starting at 0 and incrementing every time a component calls NameUtil.createUniqueName(). When an object gets toString(), a string is formed by concatenating together, with periods, the names of the object and the names of its ancestors, omitting the SystemManager. Gordon Smith Adobe Flex SDK Team From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Alex Harui Sent: Wednesday, August 13, 2008 2:41 PM To: [EMAIL PROTECTED]; flexcoders@yahoogroups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hmm. I thought the name property of every sprite was filled out. You could certainly walk the tree and find things with no name and give them names. The numbering has to do with when it got instantiated. The ConfirmScreen was the 388th thing, UIComponent was the 418th, etc. But one UI change or timing glitch can change those numbers. From: Zoran Avramov [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 13, 2008 2:21 PM To: flexcoders@yahoogroups.com; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! What happens when the object does not have a name (or it does not have a static name) like the close button that I mentioned below? Also can you share something on how the numbering schema works (ConfirmScreen388. UIComponent418. Button422), maybe I can match the numbering somehow that if that information is publicly available. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED], flexcoders@yahoogroups.com Date: Wednesday, August 13, 2008, 12:53 PM The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 13, 2008 9:40 AM To: flexcoders@yahoogroups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388.UIComponent418.Button422), is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe.com/2006/mxml http://www.adobe.com/2006/mxml layout=vertical close=PopUpManager.removePopUp(this) showCloseButton=true Thanks, Zoran --- On Tue, 8/12/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: flexcoders@yahoogroups.com Date: Tuesday, August 12, 2008, 9:38 PM He’s surprised that the popup isn’t parented by the app. Popups are parented by the systemMgr which also parents the app. Id’s are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: [EMAIL PROTECTED] ups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: [EMAIL PROTECTED] ups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am
RE: [flexcoders] AS 3.0 event target problem!!!
Well, you can use getChildAt() and assume indexes (they are less likely to change). You can subclass the components and walk their trees assigning names From: Zoran Avramov [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 13, 2008 2:54 PM To: flexcoders@yahoogroups.com; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Yep I thought you did something like that for the numbering and that is definitely not going to work. In terms of walking the tree and assigning names this will not work either since one of my requirements (It sucks to be me...) is to use my path or control name (that I just got from clicking on a button lets say) on a different instance of the .swf and this new instance will not have those names that I will generate. Is there any way that I can associate a control on the .swf with some type of identifier that can be used at a different instance of the .swf and select that control. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED], flexcoders@yahoogroups.com Date: Wednesday, August 13, 2008, 2:40 PM Hmm. I thought the name property of every sprite was filled out. You could certainly walk the tree and find things with no name and give them names. The numbering has to do with when it got instantiated. The ConfirmScreen was the 388th thing, UIComponent was the 418th, etc. But one UI change or timing glitch can change those numbers. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 2:21 PM To: [EMAIL PROTECTED] ups.com ; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! What happens when the object does not have a name (or it does not have a static name) like the close button that I mentioned below? Also can you share something on how the numbering schema works (ConfirmScreen388. UIComponent418. Button422), maybe I can match the numbering somehow that if that information is publicly available. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] com, [EMAIL PROTECTED] ups.com Date: Wednesday, August 13, 2008, 12:53 PM The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 9:40 AM To: [EMAIL PROTECTED] ups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388. UIComponent418. Button422) , is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe. com/2006/ mxml http://www.adobe.com/2006/mxml layout=vertical close=PopUpManager. removePopUp( this) showCloseButton=true Thanks, Zoran --- On Tue, 8/12/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] ups.com Date: Tuesday, August 12, 2008, 9:38 PM He's surprised that the popup isn't parented by the app. Popups are parented by the systemMgr which also parents the app. Id's are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: [EMAIL PROTECTED] ups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf
RE: [flexcoders] AS 3.0 event target problem!!!
What happens when the object does not have a name (or it does not have a static name) like the close button that I mentioned below? Also can you share something on how the numbering schema works (ConfirmScreen388. UIComponent418. Button422), maybe I can match the numbering somehow that if that information is publicly available. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED], flexcoders@yahoogroups.com Date: Wednesday, August 13, 2008, 12:53 PM The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 9:40 AM To: [EMAIL PROTECTED] ups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388. UIComponent418. Button422) , is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe. com/2006/ mxml layout=vertical close=PopUpManager. removePopUp( this) showCloseButton=true Thanks, Zoran --- On Tue, 8/12/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] ups.com Date: Tuesday, August 12, 2008, 9:38 PM He’s surprised that the popup isn’t parented by the app. Popups are parented by the systemMgr which also parents the app. Id’s are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: [EMAIL PROTECTED] ups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: [EMAIL PROTECTED] ups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am attaching listeners to all the click events and then printing out event.target to keep track of my events and where we clicked, nothing revolutionary here very easy stuff. Once I get the paths I would like to run code that will execute my steps and play the clicks back based on the event.target information that I got and I was able to do that except when we have popups. Here is the problem: When I execute a click on a button with event.target = DataEntry0._ UpdateDeleteProd 1.Form10. FormItem102. HBox103.Button10 4 A poupup appears and then I click on the close button on that popup with event.target= ConfirmScreen464. UIComponent494. Button498 COUPLE OF PROBLEMS HERE: 1) I don't have the path to the root (DataEntry0) even though I use the standard event.target. 2) This is even a bigger problem, the DOM path (ConfirmScreen464. UIComponent494. Button498) is dynamically generated (the numbers are dynamically generated) so when I use that path that I got during the time I was monitoring the app, when I use my code to play the events that very same target does not correspond to the popup that the fist event caused. I tried using IDs but in Flex I have not found anything like document.getElement ById() that is available in JavaScript. Any help on this will be greatly appreciated. Thanks p.s. I looked at the automation library that Flex has (and Mercury QTP uses) but that will not work for me.
RE: [flexcoders] AS 3.0 event target problem!!!
What happens when the object does not have a name (or it does not have a static name) like the close button that I mentioned below? Also can you share something on how the numbering schema works (ConfirmScreen388. UIComponent418. Button422), maybe I can match the numbering somehow that if that information is publicly available. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED], flexcoders@yahoogroups.com Date: Wednesday, August 13, 2008, 12:53 PM The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 13, 2008 9:40 AM To: flexcoders@yahoogroups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388.UIComponent418.Button422), is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe.com/2006/mxml; layout=vertical close=PopUpManager.removePopUp(this) showCloseButton=true Thanks, Zoran --- On Tue, 8/12/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: flexcoders@yahoogroups.com Date: Tuesday, August 12, 2008, 9:38 PM He’s surprised that the popup isn’t parented by the app. Popups are parented by the systemMgr which also parents the app. Id’s are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: [EMAIL PROTECTED] ups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: [EMAIL PROTECTED] ups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am attaching listeners to all the click events and then printing out event.target to keep track of my events and where we clicked, nothing revolutionary here very easy stuff. Once I get the paths I would like to run code that will execute my steps and play the clicks back based on the event.target information that I got and I was able to do that except when we have popups. Here is the problem: When I execute a click on a button with event.target = DataEntry0._ UpdateDeleteProd 1.Form10. FormItem102. HBox103.Button10 4 A poupup appears and then I click on the close button on that popup with event.target= ConfirmScreen464. UIComponent494. Button498 COUPLE OF PROBLEMS HERE: 1) I don't have the path to the root (DataEntry0) even though I use the standard event.target. 2) This is even a bigger problem, the DOM path (ConfirmScreen464. UIComponent494. Button498) is dynamically generated (the numbers are dynamically generated) so when I use that path that I got during the time I was monitoring the app, when I use my code to play the events that very same target does not correspond to the popup that the fist event caused. I tried using IDs but in Flex I have not found anything like document.getElement ById() that is available in JavaScript. Any help on this will be greatly appreciated. Thanks p.s. I looked at the automation library that Flex has (and Mercury QTP uses) but that will not work for me.
RE: [flexcoders] AS 3.0 event target problem!!!
Yep I thought you did something like that for the numbering and that is definitely not going to work. In terms of walking the tree and assigning names this will not work either since one of my requirements (It sucks to be me…) is to use my path or control name (that I just got from clicking on a button lets say) on a different instance of the .swf and this new instance will not have those names that I will generate. Is there any way that I can associate a control on the .swf with some type of identifier that can be used at a different instance of the .swf and select that control. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] wrote: From: Alex Harui [EMAIL PROTECTED] Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED], flexcoders@yahoogroups.com Date: Wednesday, August 13, 2008, 2:40 PM Hmm. I thought the name property of every sprite was filled out. You could certainly walk the tree and find things with no name and give them names. The numbering has to do with when it got instantiated. The ConfirmScreen was the 388th thing, UIComponent was the 418th, etc. But one UI change or timing glitch can change those numbers. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 2:21 PM To: [EMAIL PROTECTED] ups.com ; Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! What happens when the object does not have a name (or it does not have a static name) like the close button that I mentioned below? Also can you share something on how the numbering schema works (ConfirmScreen388. UIComponent418. Button422), maybe I can match the numbering somehow that if that information is publicly available. --- On Wed, 8/13/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] com, [EMAIL PROTECTED] ups.com Date: Wednesday, August 13, 2008, 12:53 PM The root of a SWF is a SystemManager. All Popups and the Application are children of the SystemManager. You may be able to use getChildByName and get more consistent results. We have a much more sophisticated technology we use in house to exercise components similar to what you are doing. Maybe it will be public someday. From: Zoran Avramov [mailto:zoran_ [EMAIL PROTECTED] com] Sent: Wednesday, August 13, 2008 9:40 AM To: [EMAIL PROTECTED] ups.com Cc: Alex Harui Subject: RE: [flexcoders] AS 3.0 event target problem!!! Hi Alex/Gordon The problem with assigning IDs is that the popup container has that close button (the path that I gave) when you create the actual popup. For example the button that I gave an example with no path to the root (ConfirmScreen388. UIComponent418. Button422) , is created by just setting this flag 'showCloseButton=true' in the code below. I need to be able to find a way to identify that button or any other DisplayObject that I want to monitor for clicks and then execute those clicks on a different instance of the same .swf. I have not found a good way to do this and if you can help me understand how you render your DOM in flex (at least the part that will help me do this) it would be greatly appreciated. mx:TitleWindow xmlns:mx=http://www.adobe. com/2006/ mxml layout=vertical close=PopUpManager. removePopUp( this) showCloseButton=true Thanks, Zoran --- On Tue, 8/12/08, Alex Harui [EMAIL PROTECTED] com wrote: From: Alex Harui [EMAIL PROTECTED] com Subject: RE: [flexcoders] AS 3.0 event target problem!!! To: [EMAIL PROTECTED] ups.com Date: Tuesday, August 12, 2008, 9:38 PM He’s surprised that the popup isn’t parented by the app. Popups are parented by the systemMgr which also parents the app. Id’s are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: [EMAIL PROTECTED] ups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: [EMAIL PROTECTED] ups.com [mailto: [EMAIL PROTECTED] ups.com ] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: [EMAIL PROTECTED] ups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am attaching listeners to all the click events and then printing out event.target to keep track of my events and where we clicked, nothing revolutionary here very easy stuff. Once I get the paths I would like to run code that will execute my steps and play
RE: [flexcoders] AS 3.0 event target problem!!!
What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am attaching listeners to all the click events and then printing out event.target to keep track of my events and where we clicked, nothing revolutionary here very easy stuff. Once I get the paths I would like to run code that will execute my steps and play the clicks back based on the event.target information that I got and I was able to do that except when we have popups. Here is the problem: When I execute a click on a button with event.target = DataEntry0._UpdateDeleteProd1.Form10.FormItem102.HBox103.Button104 A poupup appears and then I click on the close button on that popup with event.target= ConfirmScreen464.UIComponent494.Button498 COUPLE OF PROBLEMS HERE: 1) I don't have the path to the root (DataEntry0) even though I use the standard event.target. 2) This is even a bigger problem, the DOM path (ConfirmScreen464.UIComponent494.Button498) is dynamically generated (the numbers are dynamically generated) so when I use that path that I got during the time I was monitoring the app, when I use my code to play the events that very same target does not correspond to the popup that the fist event caused. I tried using IDs but in Flex I have not found anything like document.getElementById() that is available in JavaScript. Any help on this will be greatly appreciated. Thanks p.s. I looked at the automation library that Flex has (and Mercury QTP uses) but that will not work for me.
RE: [flexcoders] AS 3.0 event target problem!!!
He's surprised that the popup isn't parented by the app. Popups are parented by the systemMgr which also parents the app. Id's are per-document (or per-mxml file) so you can traverse documents and pull objects by their ids. From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Gordon Smith Sent: Tuesday, August 12, 2008 7:54 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] AS 3.0 event target problem!!! What do you mean by I don't have the path to the root? If you assign an id to each component, the toString() method will use that instead of a dynamically generated name like Button498. Gordon Smith Adobe Flex SDK Team From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of zoran_101 Sent: Tuesday, August 12, 2008 4:30 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] AS 3.0 event target problem!!! I have an interesting problem regarding event.target in Flex 2/ActionScript 3.0. I am using the Flex Grocer app in order to try something out. I am attaching listeners to all the click events and then printing out event.target to keep track of my events and where we clicked, nothing revolutionary here very easy stuff. Once I get the paths I would like to run code that will execute my steps and play the clicks back based on the event.target information that I got and I was able to do that except when we have popups. Here is the problem: When I execute a click on a button with event.target = DataEntry0._UpdateDeleteProd1.Form10.FormItem102.HBox103.Button104 A poupup appears and then I click on the close button on that popup with event.target= ConfirmScreen464.UIComponent494.Button498 COUPLE OF PROBLEMS HERE: 1) I don't have the path to the root (DataEntry0) even though I use the standard event.target. 2) This is even a bigger problem, the DOM path (ConfirmScreen464.UIComponent494.Button498) is dynamically generated (the numbers are dynamically generated) so when I use that path that I got during the time I was monitoring the app, when I use my code to play the events that very same target does not correspond to the popup that the fist event caused. I tried using IDs but in Flex I have not found anything like document.getElementById() that is available in JavaScript. Any help on this will be greatly appreciated. Thanks p.s. I looked at the automation library that Flex has (and Mercury QTP uses) but that will not work for me.