ActionScript 3 :: Parse The XML Object Into An Array Of Objects To Call Rather Than Using E4X With The Stock Data?
Nov 12, 2010
i've been reading that XML/E4X is very slow with AVM2 / ActionScript 3.when supplying an application with XML data, is it always generally a better idea to parse the XML object into an array of objects to call rather than using E4X with the stock XML data?
In a recent project, after loading an XML document, I immediately parsed it and created a bunch of custom data objects that represented the data in the XML document.Now that the project is complete, I have a little bit of time to reflect and am wondering if I should have bypassed creating the data objects and just create a handful of methods that parse the XML in specific ways.I just did a quick rewrite to test it out and it is definitely simpler (which I tend to think is better). If the XML structure changed later on in time, I could just update or write new wrapper functions for parsing it.
Goal: load XML data (it parses automatically), parse through the XML tree and assign the values to an array of my choosing for access later in the movie. Problem: I can load the XML data, but the only time I can access the XML functions, i.e. XML.firstChild, or XML.getChildNodes(), is when I am within an XML.onLoad function.
if you look at the code:: barn is an instance of an MC on stage. I have a few buttons stored in an array which i want to attach scripts with a for loop. Why does adding an item from the array not work when placed inside the function call?
I have three dynamic text boxes. variables respectively (caption0,caption1,caption2). My xml file is structured as: <?xml version="1.0" encoding="iso-8859-1"?> <captions> <caption>Roll over this</caption> <caption>This is the first Caption.</caption> <caption>This is the second Caption.</caption> </captions>
I am trying to create a rollover where when you rollover caption0; caption1 and caption2 are displayed in sequence. Everything works except though only the first caption is ever displayed. For the other two I get "level0.caption1" and "level0.caption2" instead of the text in the xml file above. How do I parse the data so that each of the variables are assigned the text in the xml file?
i've got a scenario that i'm working thru on paper first and wanted to run it by everyone to see if i'm doing it correctly and most importantly, efficiently so, here goes...the situation | an instance of the DateChooser component reads an xml file which houses info for homework assignments and their due dates. if there is a due date, make sure that date is highlighted on the DateChooser component. from what i've been told, the xml file stores urls which will tell if there is s/thing due on a particular date.
[code]...
What needs to happen as soon as the xml file is loaded? i.e. do i call a function which parses the xml data and puts it into an array? then the DateChooser component iterates thru the array looking for boolean values noting if there is an activity or not and if so, on which day. if it finds one, it sets its highlight property to true for that particular day.
I have a datagrid that uses an array of objects as the data provider. The objects are essentially key/value pairs:
{ foo:"something"} { bar:"hello"} { caca:"lorem"}
The datagrid has 2 columns. The first column is the key and the second column is the value. Right now my grid looks like:
My dataFormatter function makes sure that depending on the column (i.e. the dataField value) the correct key or value gets printed out. This works fine for displaying. However, as soon as I try and edit the value field it essentially adds a new value into the object with a key of '1'. For example, if I edit the {caca:"lorem"} object it will then contain the value {caca:"lorem",1:"new value"}.
Is there any possible way I can set the DataGridColumn so that when I edit a value it will update the value associated with the key rather than inserting a new value? I've tried using a custom item editor but it still does the insert. It seems like I need to be able to update the 'dataField' with the actual key value but I'm not sure how to do that.
after assigning loaded XML data to an array of objects, i would like to remove the XML from memory, or at least available to the garbage collector. however, doing so also removes the assigned object values in the array. rather than calling XMLdata = null;, i'm calling System.disposeXML(XMLData); as directed by the documentation:
I am able to add key/pair data into the associative arrays, like;
Code: var arrColors: Array = new Array(); arrColors.push({color: "aqua", code: "0x00FFFF"}); arrColors.push({color: "beige", code: "0xF5F5DC"}); arrColors.push({color: "brown", code: "0xA52A2A"}); // and so on
But, if I want to do the same with the array of generic objects, like;
Code: var obj: Object = new Object(); obj["key"] = "value";
How can I add more data into it, because push() function does not seem working with this type of array.
I seek correction and guidancem from you experts, on the Associative arrays and the arrays of Generic Objects. I created the following working code and I believe it is an Associative array:
Code: var arrColors: Array = new Array(); arrColors.push({color: "aqua", code: "0x00FFFF"}); arrColors.push({color: "beige", code: "0xF5F5DC"}); arrColors.push({color: "brown", code: "0xA52A2A"}); // and so on
Now, I want to create an array of Generic Objects for the same items, as below:
i filled an array with some objects, i want to be able to call a random object from that array, for instance:i trace array[2] but i want the outcome to be random. Sort of like the shuffle function in PHP.
I would like to add a bunch of cars to the stage, and store them in an array as objects. The problem is I hate using external AS files and would like to keep it as simple as possible.I tried doing :
var car:Object = {carcolor:String,carscale:Number,carpower:Number}; var test:Array = new Array() for (var i:Number=0; i<10; i++) { test.push(car) }
The problem is if I try to set a value of one object in the like test[1].carscale = 5
Every object in the array gets their attribute carscale set to 5.Is there any way I can do this without using external class files?
I'm trying to make my portfolio XML-driven. What I'm trying to do is similiar to a photogallery. The difference is that I want "sub pictures" to every item in the gallery. Example: If I click on a project name in the portfolio an image should appear. Then I want to be able to browse between different images within that project. When I click on a another project a different set of pictures will be loaded.My XML file looks as exemplified below. What I'm having troubles figuring out how to do is getting the array right.I want to access the data something like this:
imageArray[0].path[1] would return "http://www.pic.com/picA1.jpg" imageArray[0].title returns "Title A"
I fail to parse the XML into an multidimensional array like this..
<images><item title="Title A"><pic path="http://www.pic.com/picA1.jpg"> <desc>First A picture</desc> </pic>[code].....
Using AS3, I was wondering how to control one object, a ball, while another ball bounces around. I'm modifying code from "Foundation ActionScript 3.0 Animation" by Keith Peters.
I'm pretty new so I'm probably making some obvious mistakes here. First of all I thought I could refer to the balls as ball[0] and ball[1] since they are in an array called ball. Is this correct?
I've got a php backend which delivers a time (e.g. '07:00:00'). This time is recognized as a string but I need it as a Date. So what I need is: Convert a string '07:00:00' to a Flex Date object. Is there a way to do this (without using regular expressions)?
I am making a Scrollbar component and I want a script to call a calculation function for resizing the scrollbar when a new data is loaded.I was experimenting with Object.watch but it's use is beyond me. I don't understand if its the thing I need.Can Object.watch call a function when say a dynamic textfield's data is changed?
I'm having trouble with my code. I keep getting this error TypeError: Error #1009: Cannot access a property or method of a null object reference. at Test_fla::MainTimeline/frame1() I believe it has something to do with the array, considering it works when I remove the array stuff. What I'm trying to do is to be able to move objects through an array with my gravitate() function in the Grav Class.
stage.addEventListener(Event.ENTER_FRAME,onLoop, false, 0, true); for(var i:uint=0; i < numParticles; i++){ var p:Grav = new Grav(5, 0xff0000, Math.random()*250, Math.random()*250); addChild(p); particles.push(p); } function onLoop(evt:Event):void { //for(var i:uint=0; i < numParticles; i++){ //particles[i].gravitate(1,1); //}}
I am trying to obtain strings from a xml file: I tried the following:
var url:URLRequest = new URLRequest("blog.xml"); var xml:XML; var rss:URLLoader = new URLLoader();rss.load(url);rss.addEventListener(Event.COMPLETE, readRss); function readRss(e:Event):void{ xml = XML(rss.data); txt_field.text=xml.entry[1].author.name; }
I am developing an isometric rpg engine in flash AS3. I have decided to separate the engine code completely from the game data, which is in xml. So I have all the maps in xml files, all the quests and npcs etc. My question is when to parse the xml into actual Actionscript code. Should I do this at the start of every play session? Should I only parse the maps as they are called? This is like start up code. For example, I want to parse every tile into a tile object, then draw it to the map. Also, I want to parse the quests in the xml into quest objects so that they can be accessed by other code. So, when should I do this??
I am making a basic graphics program in Flex 3 and I am wondering how to parse data into drawings on the stage, but I'm just trying to figure out how it would work.
I have need to take in an xml document that looks like the following[code]...
I want to isolate the info from say section 10 to populate a movie clip and so on. I have parsed xml before so understand the basics, but am unsure as to how to manage this particular document.
I've been following Lee's tutorial on XML Basics with AS3 and I'm having a problem displaying the output of an xml document after creating the XML object.
Getting the entire contents of the xml file works: Code: Select all//Create new Loader Instance var myXMLLoader:URLLoader = new URLLoader (); //Create the Notifier Event
What way of reading and storing data is fastest for AS3. For debugging right now it is just reading the raw XML, but I suspect it would be faster if I made them into nested arrays. Would parsing the XML into nested arrays to be read later be the most efficient method?, or is there a better way to read lots of data?