<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Flex &#8211; getElementByID</title>
	<atom:link href="http://www.mattgifford.co.uk/flex-getelementbyid/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mattgifford.co.uk/flex-getelementbyid</link>
	<description>Matt Gifford aka coldfumonkeh - ColdFusion, CFML, jQuery and web development</description>
	<lastBuildDate>Mon, 30 Jan 2012 16:59:28 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: masuschi</title>
		<link>http://www.mattgifford.co.uk/flex-getelementbyid/comment-page-1#comment-1738</link>
		<dc:creator>masuschi</dc:creator>
		<pubDate>Fri, 05 Mar 2010 17:32:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.mattgifford.co.uk/blog/?p=58#comment-1738</guid>
		<description>i have my own implementation

public static function getElementById(id:String,root:Container, maximumLayer:int):Object {
				
				var parentComponent:Container = root;
				var foundOrReachedTreeEnd:Boolean = false;
				var currentIndex:int = 0;
				var layer:int = 0;
				var layerIndexes:Array = new Array();
				layerIndexes.push(0);
				var status:String = &quot;parent&quot;;
				var elem:Object;
				while( !foundOrReachedTreeEnd ){
					try{
						if( status == &quot;parent&quot; ) {
							elem = parentComponent[id];
							foundOrReachedTreeEnd = true;						
						} else {
							currentIndex = layerIndexes[layer] as int;
							var childObject:UIComponent = parentComponent.getChildAt(currentIndex) as UIComponent;
							if( childObject.id == id ) {
								elem = childObject;
							} else {
								elem = childObject[id];
							}
							foundOrReachedTreeEnd = true;
						} 
					}catch(e:ReferenceError){
						if( status == &quot;children&quot; ) {
							currentIndex = layerIndexes[layer] as int;
							currentIndex++
						} else {
							status = &quot;children&quot;
						}
						if( currentIndex &gt;= parentComponent.getChildren().length ) {
							status = &quot;parent&quot;
							currentIndex = 0;
							var nextContainerFoundOrRootLayerReached:Boolean = false;
							while( !nextContainerFoundOrRootLayerReached ) {
								
								if( currentIndex &gt;= parentComponent.getChildren().length &#124;&#124; layer == maximumLayer ) {
									layerIndexes[layer] = 0;
									layer--;
									foundOrReachedTreeEnd = layer == -1;
									if( foundOrReachedTreeEnd )break;
									
									layerIndexes[layer] = layerIndexes[layer]+1;
									currentIndex = layerIndexes[layer];
									parentComponent = parentComponent.parent as Container;
								} else {
									var ui:UIComponent;
									var dummy:UIComponent = parentComponent.getChildAt(currentIndex) as UIComponent;
									if( dummy is Container &amp;&amp; dummy.id != null ) {
										parentComponent = dummy as Container;
										nextContainerFoundOrRootLayerReached = true;
										layerIndexes[layer] = currentIndex;
										layerIndexes.push(0);
										layer++;
										currentIndex = layerIndexes[layer];
									} else {
										currentIndex++;
									}
								}
							}
						} else {
							layerIndexes[layer] = currentIndex; 
						}
					}
				}
				return elem;
			}</description>
		<content:encoded><![CDATA[<p>i have my own implementation</p>
<p>public static function getElementById(id:String,root:Container, maximumLayer:int):Object {</p>
<p>				var parentComponent:Container = root;<br />
				var foundOrReachedTreeEnd:Boolean = false;<br />
				var currentIndex:int = 0;<br />
				var layer:int = 0;<br />
				var layerIndexes:Array = new Array();<br />
				layerIndexes.push(0);<br />
				var status:String = &#8220;parent&#8221;;<br />
				var elem:Object;<br />
				while( !foundOrReachedTreeEnd ){<br />
					try{<br />
						if( status == &#8220;parent&#8221; ) {<br />
							elem = parentComponent[id];<br />
							foundOrReachedTreeEnd = true;<br />
						} else {<br />
							currentIndex = layerIndexes[layer] as int;<br />
							var childObject:UIComponent = parentComponent.getChildAt(currentIndex) as UIComponent;<br />
							if( childObject.id == id ) {<br />
								elem = childObject;<br />
							} else {<br />
								elem = childObject[id];<br />
							}<br />
							foundOrReachedTreeEnd = true;<br />
						}<br />
					}catch(e:ReferenceError){<br />
						if( status == &#8220;children&#8221; ) {<br />
							currentIndex = layerIndexes[layer] as int;<br />
							currentIndex++<br />
						} else {<br />
							status = &#8220;children&#8221;<br />
						}<br />
						if( currentIndex >= parentComponent.getChildren().length ) {<br />
							status = &#8220;parent&#8221;<br />
							currentIndex = 0;<br />
							var nextContainerFoundOrRootLayerReached:Boolean = false;<br />
							while( !nextContainerFoundOrRootLayerReached ) {</p>
<p>								if( currentIndex >= parentComponent.getChildren().length || layer == maximumLayer ) {<br />
									layerIndexes[layer] = 0;<br />
									layer&#8211;;<br />
									foundOrReachedTreeEnd = layer == -1;<br />
									if( foundOrReachedTreeEnd )break;</p>
<p>									layerIndexes[layer] = layerIndexes[layer]+1;<br />
									currentIndex = layerIndexes[layer];<br />
									parentComponent = parentComponent.parent as Container;<br />
								} else {<br />
									var ui:UIComponent;<br />
									var dummy:UIComponent = parentComponent.getChildAt(currentIndex) as UIComponent;<br />
									if( dummy is Container &#038;&#038; dummy.id != null ) {<br />
										parentComponent = dummy as Container;<br />
										nextContainerFoundOrRootLayerReached = true;<br />
										layerIndexes[layer] = currentIndex;<br />
										layerIndexes.push(0);<br />
										layer++;<br />
										currentIndex = layerIndexes[layer];<br />
									} else {<br />
										currentIndex++;<br />
									}<br />
								}<br />
							}<br />
						} else {<br />
							layerIndexes[layer] = currentIndex;<br />
						}<br />
					}<br />
				}<br />
				return elem;<br />
			}</p>
]]></content:encoded>
	</item>
</channel>
</rss>

