Yes, it looks like ArrayCollection didn't implement propertyNames(). And Proxy.as may need to change as well. Can you open an issue on Github so we don't forget?
Thanks, -Alex On 4/11/19, 2:17 AM, "spiros" <[email protected]> wrote: Hi Alex , You have right the mx.collection.Arraylist and org.apache.flex.collections.ArrayList in flex didn’t iterate in flex. I already included the js code for the three cases ( it is on bottom of email). I don’t know if it helps but in one of my tests for the ArrayCollection I extend the class and add a method with name propertyNames (*1). in this case the iteration work fine. (*1) public function propertyNames():Array { var array:Array = new Array; for (var i:int= 0 ; i< length;i++) { array.push(this[i]); } return array } Best regards Spiros -----Original Message----- From: Alex Harui [mailto:[email protected]] Sent: Thursday, April 11, 2019 10:46 AM To: [email protected] Subject: Re: For each iteration in ArrayList and ArrayCollection Hi Spiros, Could you use for-each on an ArrayList in Flex? I didn't think it would work. I thought it only worked on ArrayCollection in Flex. What is the output JavaScript for your sample code when you use ArrayCollection? In Royale if you interate on XML, or a Proxy like ArrayCollection you have to make sure the compiler knows it is XML or a Proxy subclass. If it thinks items is an Object it will not generate the right code. HTH, -Alex On 4/10/19, 6:01 AM, "spiros" <[email protected]> wrote: Hi, I am trying to make an iteration using the for each. The property class is a simple class with two fields. I test the iteration with this classes : 1. org.apache.royale.collections.ArrayList error message: TypeError: propertyClass is undefined 2. mx.collections.ArrayList error message TypeError: propertyClass is undefined 3. mx.collections.ArrayCollection error message TypeError: foreachiter0_target.propertyNames is not a function the as3 code is: private function iteration():void { var object:Object = new Object; for each (var propertyClass:PropertyClass in items) { object[propertyClass.name] = propertyClass.index; } } Thanks in advanced Spiros ps: The js generated code for this 3 classes (1) /** * @private */ com.novusnet.jsTests.ArrayCollectionIteration.prototype.com_novusnet_jsTests _ArrayCollectionIteration_iteration = function() { var /** @type {Object} */ object = new Object(); var foreachiter0_target = this.com_novusnet_jsTests_ArrayCollectionIteration_items; for (var foreachiter0 in foreachiter0_target) { var propertyClass = foreachiter0_target[foreachiter0]; { object[propertyClass.name] = propertyClass.index; }} }; (2) /** * @private */ com.novusnet.jsTests.ArrayCollectionIteration.prototype.com_novusnet_jsTests _ArrayCollectionIteration_iteration = function() { var /** @type {Object} */ object = new Object(); var foreachiter0_target = this.com_novusnet_jsTests_ArrayCollectionIteration_items; for (var foreachiter0 in foreachiter0_target) { var propertyClass = foreachiter0_target[foreachiter0]; { object[propertyClass.name] = propertyClass.index; }} }; (3) /** * @private */ com.novusnet.jsTests.ArrayCollectionIteration.prototype.com_novusnet_jsTests _ArrayCollectionIteration_iteration = function() { var /** @type {Object} */ object = new Object(); var foreachiter0_target = this.com_novusnet_jsTests_ArrayCollectionIteration_items; for (var foreachiter0 in foreachiter0_target.propertyNames()) { var propertyClass = foreachiter0_target.getProperty(foreachiter0); { object[propertyClass.name] = propertyClass.index; }} };
