Hello :) You can use if you want my opensource framework and all this ADT (abstract data type) :
In VEGAS you can find the package vegas.data.* with an ADT library based on the JAVA Collections and the Jakarta Collections Framework. Page of the project : http://code.google.com/p/vegas/ Install tutorial : http://code.google.com/p/vegas/wiki/InstallVEGASwithSVN Example to use my ADT in AS2 in the SVN directory : http://svn1.cvsdude.com/osflash/vegas/AS2/trunk/bin/test/vegas/data/ The documentation : http://vegas.ekameleon.net/ (see vegas.data package) See the vegas.data.iterator and vegas.data.map packages ;) EKA+ :) 2007/8/27, Andy Herrman <[EMAIL PROTECTED]>: > > Why not use a hashtable instead of an array? Give your elements all > unique IDs (you could even just do an incrementing integer). A > hashtable would give you faster lookup (don't have to iterate over the > array searching for it) and you can remove hashtable entries without > messing up any kind of ordering. > > -Andy > > On 8/27/07, dr.ache <[EMAIL PROTECTED]> wrote: > > hi. > > dont delete the elements from your array. > > when you call page.destroy() method generate another array in which you > > push a "true", > > whenever onElementKilled is called.Check also, if the array contains as > > much elements > > as your children array contains. > > If true, delete the whole array with childs. > > > > possible? > > > > dr.ache > > > > Jiri Heitlager | dadata.org schrieb: > > > Hello list, > > > > > > i have a page object that contains has a Array that holds > > > pageElements. This is a storage for elements with an iPageElement > > > interface. > > > The page object has an destroy() method. When page.destroy() is > > > called, it will loop trough the page.pageElements Array using an > > > iterator. Every iPageElement broadcasts an onElementKilled message > > > when is has been destroyed. When a pageElement broadcast this message, > > > the page need to continue in deleting the next element in the > > > page.pageElement Array. > > > The callback method onElementKilled in the page instance, searches for > > > the element that has been deleted and then removes it from the > > > page.pageElements Array. This is where i think a problem rises, > > > because if the page.pageElements array is updated during the process, > > > the index does not match the element to remove anymore. How can I > > > solve this potential risk? > > > > > > Another question, the array that is passes into the iterator is a > > > reference to the pageElements Array. Does this mean, that if I delete > > > an element from this array from within the iterator, the > > > page.pageElements array is modified? > > > > > > I hope my question is clear.. > > > > > > thank you in advance. > > > > > > Jiri > > > > > > > > > Below a snippet: > > > > > > private function getPageElementIterator() : Void > > > { > > > return new PageElementIterator(this.pageElements) > > > } > > > > > > //initiated the deleting proces, by starting with the first > element. > > > public function destroyPageElements() : Void > > > { > > > destroyElement(this.pageElements[0]); > > > } > > > > > > private function destroyElement(element:iPageElement) : Void > > > { > > > curElement.addEventListener('onElementKilled' , this) > > > curElement.destroy(); > > > > > > } > > > private function onElementKilled(eventObj:Object) : Void > > > { > > > var killElement:iPageElement = eventObj.target; > > > > > > var iter:PageElementIterator = this.getPageElementIterator(); > > > > > > while(iter.hasNext()){ > > > var curElement:iPage = iPage (iter.next()); > > > > > > if(killElement == curElement) { > > > > > > //deleted the element now clear the listener and > continue > > > killElement.removeEventListener('onElementKilled' , > this) > > > > > > /* > > > * POTENTIAL RISK, if a new element is added, then the > > > index, does not match the right element anymore > > > * > > > * get the current index from the deleted element by > > > checking what > > > * the currentIndex of the iterator is, and remove it > > > from this.pageElements Array > > > */ > > > this.pageElements = > > > this.pageElements.splice((iter.getCurrentIndex() , 0) > > > > > > //get the next element in the iterator array > > > if(iter.hasNext()) this.destroyElement( > > > iPage(iter.next()) ); > > > delete killedElement; > > > break; > > > } > > > } > > > } > > > if(this.pageElements.length == 0){ > > > trace('all page elements have been removed') > > > } > > > } > > > > > > _______________________________________________ > > > Flashcoders@chattyfig.figleaf.com > > > To change your subscription options or search the archive: > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > Brought to you by Fig Leaf Software > > > Premier Authorized Adobe Consulting and Training > > > http://www.figleaf.com > > > http://training.figleaf.com > > > > > > > _______________________________________________ > > Flashcoders@chattyfig.figleaf.com > > To change your subscription options or search the archive: > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > Brought to you by Fig Leaf Software > > Premier Authorized Adobe Consulting and Training > > http://www.figleaf.com > > http://training.figleaf.com > > > _______________________________________________ > Flashcoders@chattyfig.figleaf.com > To change your subscription options or search the archive: > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > Brought to you by Fig Leaf Software > Premier Authorized Adobe Consulting and Training > http://www.figleaf.com > http://training.figleaf.com > _______________________________________________ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com