ActionScript 3.0 :: XML Data To Object Properties Dynamically
Feb 19, 2009
When working with XML I find it best to bring in the XML document and then add the data to new objects so they can be easily referenced later. Previously I have done this by hard-coding the node names when I parse the XML and add the appropriate data to a property in my new custom object, allowing me to state what type of data it is, array, string, etc. I would really like a way to do this dynamically, so when I parse the XML it detects whether the node has children and makes an array, etc. Something was done by XML2Object in AS2.
I have a custom property called Player (like a basketball player) that has properties for points per game (ppg), rebounds per game (rpg), etc.I'm designing a piece where users can get averages and compare players across many different categories.
I have a String variable "stat" that tracks which property they want to compare. I can use "stat" in a sorton function, but need to use it to access the object property. So when the user chooses "ppg" or "rpg" i can access Player.ppg and Player.rpg by using the stat variable. Player.stat doesn't work.
Is it possible to dynamically name properties on a custom object ?
something like:
Code: o:Object = new Object(); s:String = 'abcd'; // the name I want for my objects property o.[s] = '1234'; // 1084: Syntax error: expecting identifier before leftbracket. trace(o.abcd) // 1234
EDIT I want to do this as an associative array, so if there is a better alternative then I'd be happy with that as well.
I need to create a custom Object that basically stores some custom parameters (properties?), which I have successfully done, and the code below works fine.
PHP Code: myObject = new Object(); myObject.nameLabel = "New Releases"; myObject.artOrientation = "portrait"; myObject.artAmount = 5;
I find the new compiler and debugger capabilities very useful, since I'm not the most detail-oriented, so I (usually) like that Flash forces me to strict-type my variables and such. Anyway, I was wondering if it's a "best practice" to strict data type a custom objects' properties, and if so, how to do it in the logic above? I kept getting syntax errors when I just tried it initially.
I know if I created a custom Class .AS file, I would be forced to data type the properties... but I'd rather just do it "in-line" in my main .FLA file. Also, I know I can just pass typed VARIABLES to the properties... but I'd rather have the properties strict-typed themselves... so if I try to pass a variable as the wrong type, then I would still get an error.
I am not sure my title is correct.Is there any 3rd-party library on AS3.0( like STL in C++), can do this: I define my class and use its objects as associative array, for example:
Is there any 3rd-party library on AS3.0( like STL in C++) around, can do this:I define my class and use its objects as associative array, for example:
class Company{ var public name; var public logo; var public address; var public telnumber; }
And use a kind of data structure class(say, List) to store a few Company-type objects. And then, I define my own comparing and searching function on that List class(namely, override the default one); within my functions I could specify on which attribute(name, or address, or telephone number) to perform searching, and how it would be performed.
Just been playing around with the tutorials, on the Set properties/Get properties. Everything is all cool, except the "instance name" aspect. I dnt really understand that too well. Is it possible to change an Mc Name dynamically? If you look at my FLA when you hit the top left red button you will get a trace of the mcName as "square". Now if you input a new mc Name on the right hand side, you will see it change on the left hand side. But i want to know why it doesnt remain as the new mc Name, it still goes back to square.
i'm attempting to cast an object's property as an actual property of another object. here's my object variable: var propObj:Object = {prop:"width", width:50}; now i want to assign the property of a sprite using that object's properties. var sp:Sprite = new Sprite(); sp.(propObj.prop as Sprite.property) = propObj.width; now, i'm not even going to try that because i know the compiler will explode all up in my face. but you should be able to see what i'm trying to do. why i'm trying to do it is because i'm reading in an XML file with an undetermined list of usable properties for specific objects. so instead of writing something like a huge switch statement to evaluate whether the XML file has a value for that specific property, i'm trying to assign properties dynamically based on what's available in the XML file. if what i'm trying to do is possible, what's the best way to do it?
I forgot to put it in the title so I'll just place it here; I am using AS 2.0. I know that there are other ways to accomplish the goal that am after, but I was wondering if anyone knows of a way to access the properties of an object's properties?
Here is the code that I thought of, even though it doesn't work
var a:Object = new Object(); a.bproperty = 0; //lowerlevel properties a.cproperty = 1; // lowerlevel properties
[Code].....
This really just boils down to how I am organizing the code(I have ideas on what do next, and i am 99% sure that I can get them to work), and if there is a way to dynamically access the properties of the objects properties, It will save me from creating yet another large block of code for my project. If you want to see the unfinished project, go to [URL]
Allright, i receive a string and want to convert it to object. here a test that i have made:
[code]....
this work pretty fine... but i am receiving the object property as follow: "{a:'test',b:'testAgain'}" How can i easily convert it to object properties?
I'm basically loading an XML file to assign instances of a movie clip a distinct value, which it uses to modify its height. So, I'm looping through the xml and instantiating my class Object each time (Rect) and then placing that Object into an array:
Code: function loadXML(loaded){ if(loaded){ var boxArray:Array; xmlNode = this.firstChild;
[code]....
the trace here always comes up undefined. "listPosition" in this bit is an Rect parameter, defined in the previous bit of code as "i", so I can keep track of the order of the stack.I've found one or two examples of putting objects into an array and getting them back out, but it doesn't seem to work with this, maybe because I'm using a class. I don't know.Could this be an area where I need to use the array access brackets, like around the movie clip the object is loaded into. I've tried everything I can think of -- referencing back to the movieclip, adding extra objectRef type parameters... nothing has worked yet.
Currently I have a stage.swf (the parent) which loads child movies "inside itself" into an area called external.
Currently, for each of these movies I have to set properties in stage such as:
Movie Name, Movie Title, Length (how many frames)
Now, the annoying part of this is the length. If at any point I decide I want to add or remove a scene from a child, I have to reset the relevant "length" variable on stage.
what I really want to know is, is there a way that when each of the child movies load, stage can find out dynamically how many frames they have?
I can create a Movie Class to have all these variable declarations in one place, but that doesn't really solve the problem I have. I'd still have to manually go through and change variables ad hoc....
I'm currently reading in data from an XML file. Each attribute of a child is assigned as a property of a movieclip as shown in the code attached. However, what i'd like to do is not have the property names already decided as i don't necessarily know how many attributes a child in the xml file will have. Is it possible to dynamically name the properties depending on what number attribute they are...?
My movieclip clipArt_mc receives movieclips that are loaded dynamically from a listbox selection using:
[Code]....
I would like to access the nested or loaded in movieclip inside of clipArt_mc that has in it a movieclip named color_mc so that I can apply color directly to it instead of clipArt_mc.
Given this:public namespace foo;foo var bar:String = "baz";We can access the property "bar" like so:[code]It gives me the following error: ReferenceError: Error #1069: Property foo::bar not found on MyClass and there is no default value.On further inspection of the foo namespace I can see (in the debugger) that the URI is in the format {package}:{type}/{name}. If I try to replicate this by doing the following:[code]Does anyone know if it is possible to get access to namespaced members like this? I don't have compile time access to the namespace, but I can look up it's uri (and prefix) dynamically at run time.
I tried rewriting Senocular's AlignmentProperties that alter the prototype of a MovieClip for AS1 and AS2 in AS3... (Basically it adds a top, left, bottom, right, centerY, centerX property to all MovieClips so you can align them regardless of their registration point)Now, I know you (senocular) say prototypes are not typically used anymore for AS3 but they are still there in case you need them. I think this utility could be pretty useful. What are your thoughts on how a property could be dynamically added to a class in AS3?[URL]trace(my_mc.top);// traces the top of a movie clip regardless of the registrationmy_mc.top=0; //aligns the top of a movieclip to 0 regardless of the registrationBut ran into a snag adding properties to a class via prototype.Here is my class...
I am trying to use the duplicateMovieClip event to create a row of custom movie clips dynamically and I would like to be able to set the _alpha properties on each object depending on an event i am firing in a different movie.[code]...
I need to dynamically bind properties of components created at runtime. In this particular case please assume I need to use bindProperty. I don't quite understand why the following simplistic test is failing (see code). When I click the button, the label text does not change.
I realize that there are simpler ways to go about this particular example using traditional non-dynamic binding, but I need to understand it in terms of using bindProperty.
I created a movie clip symbol with a user interface in it, using the standard components. It contains various components that I draged on the stage. I named the instances (e.g titleLabel). Then I created an ActionScript class for that user interface. Under the linkage properties of the symbol I specified that class. In the class itself, i declared the attribute "var titleLabel:Label". I thought this would be the same instance from the symbol? But: Trying to set the text of the Label AFTER the movie was dynamically added to the parent does not work. I cannot access any properties.
Here is the example:
My Class for the user interface:
Code: import mx.controls.*; class Information extends MovieClip { var titleLabel:Label; //this is the same instance name as in the symbol
I did small flash where i exported layers from Photoshop and converted them into movieclips. currently i need to change they image source to other when i click on button. this one is required to make swf file smaller to load files after loading swf file itself. i found how to do it but in this case i cant change size of picture.
Code: function img5(e:MouseEvent):void{ var imageLoader:Loader = new Loader(); var imageRequest:URLRequest = new URLRequest("images/Water lilies.jpg");
Im new to placing external data into Flash. I just got CS3 and Im trying to use Flash to dynamically load XML data via a FlashVars call in the HTML.
The problem is I have followed the very straight forward AS2 Help files for using FlashVars and URL variables.I have placed the code directly from the Help file into the Html between <noscript> <noscript>and i keep getting undefined.I have tried saving the file as flash 8 and i am publish flash 8.
I'm attempting to use "if" statements to determine if an dynamically loaded photo is portrait or landscape. The problem I'm having is when I try "gallery_mc.getChildAt(0).width", it returns 0.
Previously I post a discussion on this matter on Flex Adobe forum and still don't understand what needs to be done. So, I'll try my luck again on stackoverflow. I'm using drag and drop data binding functionality in flash builder 4 on a data-grid. However, the data I need to show need to be query from another object.