ActionScript 3.0 :: Sorting Vector Of Objects Based On Property (Numeric)
Jan 9, 2010
What I want is to sort a Vector array of objects(not primitive), based on a propery(Number). (think character.zDepth). Generally the same thing as the sortOn function of Arrays, except that we don't have that for Vectors.
like myArray.sortOn(x, Array.NUMERIC)
Dealing with Vector arrays of primitives not complex objects.
I am loading data from an xml file into several different arrays. Once its all information is in the arrays I then sort one of the arrays (called percentage) numerically from highest to lowest. What I can't figure out is how to reflect the changes in position in the other arrays to what has happened in the percentage array.
I have a DataGrid in Flash 8 Professional. I am having trouble sorting numerical data. Here is the code placed on the frame (modified from the tutorial):
I need to sort an arraycollection. the problem is that my array is combined from two diffrent arrays, in one the age field is called "AGE", and in the other the age is called "MYAGE".
Now I need to sort the combined array according to age but I got two fields with diffrent names. I can go through the array and change all "MYAGE" to "AGE" but i was wondering if theres maybe a way to sort the array in its current status?
How would you go about initializing a Vector. with say the values 1, 2, 3, 4, and 5.
Logic would say you could do newVector = new Vector. ( [1, 2, 3, 4, 5] );
You could also try something like this...
var tmp = [1, 2, 3, 4, 5]; newVector = new Vector.(); newVector = newVector.concat(tmp);
But then you get a type error converting Array to Vector.
I'm stumped, am I missing something stupid or does the vector class really not play well with numeric types? You can try making them decimal numbers just to be sure they get cast as number and not int.
I have a vector of Objects. Each object has two properties - a country and a person's name.
I'd like to sort & count the number of people from whatever country they are from...
i.e. 20 USA 18 France 16 England
I've found articles online that deal with sorting, but I'd like to be able to count the objects' "country" properties dynamically because they aren't known beforehand (I don't want to loop through every country).
Im busy with a rpg graphics engine, while discovering as3 whilst doing it. So I made different classes for the world, tile managers and players, etc. But since I have a 45 degrees SNES rpg view on my world I need depth sorting based on their Y coordinate. At least my npc's and the middle tile layer need that. But all these objects are now all different classes now and the swapchilderen method is quite cumbersome. Do I need a whole messy cumbersome method to sort specific tiles and npc's based on their y coordinate or is there a simpler method to have proper depth sorting in as3?
I have been working on sorting Arraycollection like ascending , descending the numeric list. Total length of my collection will go up to 100. Now I want to preform sort to nested data like this
Data Structure
Name : String Categories : Array ["A","x or y or z","C"]
Categories array will have maximum 3 items , out of that three items the second item can have 3 different values either X or Y or Z. My result data looks like here
I've been playing around with ActionScript 3. They have a new way of placing clips onto the stage, "addChild(clip)," which automatically places the clip onto the stage with it's own depth. So here's my problem, when making a tile based game, I have to constantly depth sort to make sure the object lower on the screen has the higher depth than an object higher on the screen. Pretty much, their depth depended on their y-coord. Does ActionScript 3 still let us play with depths?
Quick Question, I just started learning the psuedo 3D methods in FP10, and as a sample I am creating a virtual rolodex. It is dynamically generated with a user inputted number of cards. The cards are then added to the stage and are rotated around a central axis using the function below.
[Code]....
After this is created I have an Enter Frame listener that rotates the cards around that axis based on mouse position. Problem is that they get depth sorted based on the order that they are created, cardArray[0] in back all the way up to whatever the number of cards is. I have tried a few of the simple Z sorting classes and noticed that my cards dont actually change there Z property, only their rotationX. I was just wondering if anyone might know of an easy way to depth sort these. Otherwise the best idea I can come up with is to check the rotation based on 360 degrees and assign a depth. That seems like a lot of ugly math though if you want to see what the swf looks like check here.
I have a question on coustom sort..I have a datagrid for which one coloum has a itemrenderer. I need to sort a coloum based on the value in the item renderer. In the dataprovider for the datagrid i have a numeric value. Based on the numeric value in dataprovider i have a String associated with that value which is shown in UI. I need to sort based on the statusLabel associated with the numeric value.
Trying to re-sort an array of objects from: var arr:Array = new Array({num:0},{num:1},{num:2},{num:3}) to var arr:Array = ({num:0},{num:3},{num:1},{num:2})
I wonder if any body could help me. I am currently working on a flash presentation which will be running on a 40" Plasma Screen. What's the perfect size to set up my flash file. At the moment my file is 800 x 600 pixels. I only have one .jepg image at the intro and the rest of the presentation is vector based.
Is there a way to adjust the rasterising of a vector based displayobject? my problem is this: I create a textfield for example, and after moving it to z = -400 the whole text will look horrible (just like a low quality jpeg or so) as it comes closer to the viewport. I already know the vector shapes gets rasterized as soon the z value is set but there should be at least a way how it is done!?
I have an object array into which I've pushed a number of objects with different variables :- myArray.push({myRef: 1, myValue: "W"}); I can sort the array in numerical order using :-myArray.sortOn("myRef", Array.NUMERIC);but after sorting I would like to collapse the array using something along the lines of :-myArray.join("");to join the OTHER variable (myValue)...Is it possible to do this without pushing every instance of 'myValue' to another array and then joining that?
I'm looking for a way to take SVG path info (basically a string of coordinates) and dynamically draw it with Actionscript. Icing on the cake would be if those shapes could detect mouse events to trigger JS and dynamically change their appearance (fill, stroke, etc...).
I'm currently trying something similar to this ([URL]) using SVG but it's just too slow in IE. I've also tried Google's SVG Web ([URL]) which basically does exactly what I'm looking for (it converts SVG to Flash in IE) but again, it's sloooooow - which is why I'm considering doing the whole shebang in Flash.
What is serialization support like for the new Vector class? I have a Vector.<GameMove> which I'd like to serialize into a ByteArray. GameMove is a custom class. I presume it's necesssary to call registerClassAlias() on GameMove, but do I also have to register Vector.<GameMove>? It's it it's own distinctive type, or is it kinda composed of those two types?
I'm creating a simulation in which a large number of objects are added to vectors and then taken away in random order (as more are being added). To remove the objects, I splice the object from the vector it's in, and notify all the other objects that an object ahead of them was removed so they can change their indices accordingly. As far as I know, the objects have no other references (I think), and within the object, I set everything to null. I read somewhere that you can't put "delete this" in the class, so I didn't bother with that. Will this be sufficient to get the object garbage collected, or should I do something else? What are the best ways to get something like this garbage collected?
I want to arrange certain objects from a vector/array into a gird
Currently, I know how to do this during the creation of the objects.
Here's the grid function I've created:
function ArrangeInGrid(uiRow:uint, uiCol:uint, iOffsetX:int, iOffsetY:int):void { for(var i:uint = 0; i < uiRow; ++i) {
[Code].....
Now I want to be able to apply the same logic of arranging objects in an array/vector in to a grid, how do I do it?
Or suggest a more efficient way to do so (if you have).
Notes:
I want it to be flexible in how many rows and columns the grid can have. The vector I'm using already has the cards in it. I can't just push the cards into the vector cuz of the way I manually created my cards.
I know there are different situations where one would be better than the other, but I'm comortable with a generalized statistic of... How much faster is blitting than using vector Sprite objects in Flash?
how to reorder an array based on the information contained in another array. What my script is currently doing is detecting all the attached monitors I have and then ordering them based on their left bounds. However I then want to reorder the screens location in the array based on whether the user has selected that display or not. If the user has selected it, by clicking a button, the button movie clip will be on frame two, if they haven't been chosen it will be on frame one. So what I am doing is then creating two separate arrays, chosen screens and not chosen screens, and then combining them into one.
Code: if(displayButton.currentFrame==displayButton.totalFrames) { //sort the chosen ones into an array
[Code]....
My problem now is being able to reorder a separate array which contains all the screens, called screenArray, based off of that. screenArray currently returns [Object Screen], [Object Screen], [Object Screen], etc... and is in the order of 1,2,3,4,5,6. How do I take then and get it to be equal to the order of my displayButtonsChosen Array of 1,3,5,2,4,6?
Code: var myArrow:ArrowMovieClip = new ArrowMovieClip(); var vectorDisplayObject:DisplayObject = stage.addChild( myArrow );
I used the code above to create an instance of an arrow graphic that I made using the line tool (the graphic is embedded in a movie clip). I now want to add different colored fills and different stroke sizes and colors using code. Is it possible to do this with pre-drawn vector graphic objects, or is it only doable if I create the arrow with code using things like lineTo and curveTo?
iSo let's say I have three different arrays of objects, and I want to combine them into one sorted array. I want the order to be such that the items from each array are evenly distributed throughout the sorted array.
If there were 3 xItems, 3 yItems, and 3 zItems, the sorted array would have this order: x, y, z, x, y, z, x, y, z
HOWEVER, even if the arrays are differing lengths, I still need to make them alternate as much as possible. If there were 6 xItems, 4 yItems, and 2 zItems, the sorted array should have this order: x, y, x, y, x, z, x, y, x, y, x, z
I have a list containing display objects from throughout the application (insertion order). I want to process the list either top-down (parent, child) or bottom up (child, parent). The only requirement is that either a parent is processed before any child or vice versa a child before its parent. What is a good approach? This question is not about sorting a list. It's about retrieving the depth of a particular display object.
Example Display list: A (root) B1 C1 C2 D1 B2 ......
My list: list = [E1, F4, A, B2, B1, C3, ..., N9, N8]
Bottom-up: N9, N8, F4, E1, C3, B2, B1, A
Top-down: A, B2, B1, C3, E1, F4, N9, N8 Does not matter if N9 before N8 or N8 before N9. Important is that any N is before M (first run) or any M before its children N* (second run).
i have a littlepiece of script the only thing i need is get the property of "ay" and "ax" evaluated all the time to use the numeric value, since i can't use eval.... obviusly this script is in the first frame and the mc "agencia" starts at 100% i always get 100 as a return and as i explained before i need to get the value all the time.here is the script
ax = getProperty(agencia, _xscale) ay = getProperty(agencia, _yscale) import mx.transitions.Tween;[code].....
I create a new object. My new object will always have a labelField because it has to be added to a dataProvider in a ComboBox. The problem is my next property. Each object in the dataProvider has a dataField property that has a string value [eg: 'code' or 'isoCode'].[code]