ActionScript 3.0 :: Inserting New Values Into Multidimensional Arrays?
Jul 1, 2011
TL;DR version: how do I add more values to the 0th row of an array?[If that's too vague, read on.]What I'm trying to do currently is make a tilemap engine. I have an multidimensional array that is sifted through when the program begins that determines what type of tile is added to the stage which was then put in its appropriate place. These tiles scroll when the player moves.
Now, the problem is, I expect to make huge maps. Putting a large amount of children (tiles) on the stage makes the program incredibly laggy, so to fix this I created another multidimensional array that held the values of the tiles that are currently in the field of vision of the player.
the values in the new array shifts and moves along with the player, gets the children that will be left behind and deletes them. To keep things short, the player would not notice the addition and removal of the tiles, because the tiles are added at the position where the player is currently moving and the tiles that are removed are removed where the player is moving away from.
The issue I am having lies with moving up and down. The addition and removal of tiles follows a very strict process:
1. shift the array that holds tiles in the player's range of vision so that new tile values can be added.
2. add children (tiles), assign their names, add the name to the appropriate place in the array and move the child (tile) to the appropriate place on the stage.
3. Delete the tiles left behind.
4. Remove the names of the children that were deleted from the array.
To move up, I would have to unshift the array (so that all the rows move down one), add the names of the new children(tiles) that will appear directly above the range of view, then delete the children that are named in the last row of the array and pop the last value in the array (which, since this is a multidimensional array, is not one value, but the entire last row of children names). The problem is, after I unshift the array and add a new row with only a single value in it, I can't add more values into the row!
(the name of the array that holds the names of the children in the player's range of view is containmentUnit.)
I have tried these,
Code:
containmentUnit[0].push("test");
Code:
containmentUnit[0].splice(0, 0, "test");
but it always comes out the same way-- with an error message that reads:
TypeError: Error #1006: value is not a function.
at storage/update()
In my example I have established root items (item1,item2,item3 and item4) and sub-items underneath them, and I can easily access the values at the sub-level, but I can't figure out how to output the values on the root level, if I use treemenu[0] it doesn't output "item 1" but the values on the sublevel, how can I point to the actual value on the root level? so it would output for example "item 1"?
Code: var treemenu:Array = new Array(new Array()); treemenu.push("Item 1");
So I'm coding a maze in Flash using ActionScript 2.0. I'm using a 2D array and with that I will give each point a value, either 1 or 2. I then plan to use modulo and an if else statement to pull a brick movie clip from my library. Here's what I've coded so far with the 2D array. This is my first time using this array and I'm unsure wwether I have coded this correctly. how do I use this array now to assign the values of 0 and 1?
I am running into some trouble adding an array into another array to create a multi-dimensional array.The code appears as below:
var slideDataArray:Array = new Array(); var slideShowDataArray:Array = new Array(); slideDataArray[0] = xmlData.SlideShowParameters.SlideShowImagesDirectory;[code]........
I am looking for a means of placing the slideDataArray into a 'slot' or value of slideShowDataArray so that I can in the end pass the slideShowDataArray as a parameter to another function.As of now, the last slideDataArray appears 11 times (the loop runs 11 times) in slideShowDataArray and the way the code is written the slideDataArray is unique every iteration of the loop.
Below you can see this rotation-towards-mouse experiment I wanted to try out. I made a tilemap using a 2D array and my objective was to get all the "hands" pointing towards the mouse. I almost got it working in the sense that all of the "hands" are rotating but they are all rotating the same way, namely they all rotate exactly like the last hand - i.e. the last object in the array.You can try it with this code to see what I mean. You just need two movieclips in the library, one called Hand(preferably not a circle) and the other called Ball but it can be anything.
I actually tried using similar code involving a drag-and-drop function and that worked fine. I could move around each tile separately but for this to work it seems I have to add the listener differently. At least that's my theory but I haven't found the correct way.his is probably super-simple but my googling and trial-and-error'ing haven't turned up anything yet
ActionScript Code: var hand:Hand; var tileMap:Array = new Array();
I'm pretty sure this is a common requirement but a bit of googling hasn't provided me with a satisfactory answer so far.Basically, I need to shuffle a 2d array of Points (co-ordinates) so that they are still the same co-ordinates, but stored in a different order.
I am reading a set of latitude & Longitude Coordinates that define a polygone area. They are keyed to an area ID and I retrieve them from a SQL database. So for example, Area ID 153 might have 20 coordinates and area ID 77 might have 11 coordinates. I wish to save these in a 2-D array indexed by the area ID, and where each coordinate pair is combined into one Google LatLng object. At a later point I wish to retrieve just one row i.e. the set of coordinates for one area, and send them to a function that accepts an array of coordinates and draws the polygon on a map. Here's what I have:
private var coordsFromSql:ArrayCollection = new ArrayCollection(); var polyArray:Array = new Array(); for each(var item:COORDINATES in coordsFromSql)
I have an array of movie clips (representing band members) which have various properties, among them them a property which tells where the band member went to after they left their current band. For those who formed a new group, I want to create an array. Within that array, I want to group all the ones that left for the same group into secondary arrays. So, if you had five band members and 2 of them left for group X and 3 left for group Y. What's the best way to do this? This is, roughly, my code:
[Code]...
Alternatively I suppose if I could do without a multidimensional array and just loop through all the members and say - for those members whose group is the same, perform this function, with the name of that same group passed as the parameter for the function. I guess the trouble I'm having is identifying who's the same.
I am creating a menu buttons with the use of array. A reference link is given below. -- grandmother.increating such associative buttons with array (actionscript 2).
I may be confusing myself as I seem to do this whenever working with multi-D arrays... but perhaps you guys can set me back on the right track. I'm working on a flash application that is kind of a game. It's a memory test consisting of 10 blocks, it is very similar to the one shown in the video below.... but there are some differences where this one wouldn't for my situation. (apparently I can't link) The title on youtube is Spatial Span... it will be the first result if you search for "Spatial Span" The difference is that there are 2 sets to every level and you only need to get 1 correct to move onto the next level.
I have some working code that I created in C and ported over to the PSP. I decided that I wanted to work with it in flash and ported it over to AS3.0. It took me a bit to get used to the graphics commands but over the course of a few days I managed to get the code typed in. I compiled it and watched my baby come to life in a new environment. But there was something wrong, everything looked correct but felt wrong. I looked closer and saw what the problem was. The maze is not being displayed like how I put it in.First let me give you some visuals to look at.
[Code]...
When I run the program this is how flash displays the mazeThe starting position is the bottom left corner. Which in flash terms is 13,1. Why oh why is flash rotating and then inverting the map? If row = 13 and col = 1, then [row-1][col] should equal 12,1. I've broken it down and analyzed it till my brain hurt... I can not find any reason for this bizarre behavior... All the program does is interpret the 1's and 0's to know where to place a wall. If the square has a 1 then a wall goes there, if not then its open and the player can walk there. I look at the surrounding squares and then draw what I see... no rotating and no inverting is done.I remind you that the code works as intended in C. So I don't think its a coding issue.
I have problems defining indexed array with actionscript. The task is following. I have a board of point objects. I need to store them into one array, so I can access each point using simply it x,y coordinates. for example to get point one I want to be able use points[1][1], etc. I read the doc here [URL], and realized that I don't understand how to initialize array for my needs. (Especially when it can contain from 10 to 15 rows and columns, so it will be quite hard to use following notation: masterTaskList[0] = ["wash dishes", "take out trash"];, as suggested in docs.) What I am doing is:
I'm just beginning to learn AS3 and I've been reading Colin Moock's Essential ActionScript 3.0.(I've been doing some exercises on how to randomly choose elements from arrays). All of the book's example codes that I've tried so far (in FLASH CS5) seem to work pretty well. But I'm having a bit of problem with the example code below which is found in chapter 11 (Arrays):
var row1:Array = [6, 2.99]; // Quantity 6, Price 2.99 var row2:Array = [4, 9.99]; // Quantity 4, Price 9.99 var row3:Array = [1, 59.99]; // Quantity 1, Price 59.99[code]....
When I test the movie the output panel displays NaN instead of 117.89.
I have a dobut in assign a value to a particular location in an 3-dimensional array during runtime..for example i want to enter value in aBoxes[1][2] on runtime.
I have a detailed results page to which I want to post all the questions, answers, and whether the user answered correctly or incorrectly. All this information is stored in a multidimensional array and its successfully showing the results via the trace method.
My question is, what is the syntax for populating a dynamic text field with these results? Do I just write out one long line of AS with the newline command to separate the data? How would I go about applying bold to certain parts of the stored data that I will be showing?
Here is current code for my detailed results page:
function showResults(){ trace("Now showing results"); for(var i:Number = 0; i < NumberOfChallenges; i++){ //This calls the length of the original array (not the spliced copy)
I have a little problem and I guess it won't be difficult to solve, but I am still learning to create codes and I get stuck every once in a while (more every than once haha). What I want is to create to different arrays, one for all the buttons I have, and the other for all the instances of the frames that will take me when I hit each button. So for example if I hit mybutton3, it should take me to frame3.
Is there a simple way to ask "Does this array contain this value?" For example I have an array1 [0,2,4,6,8,10] and another array2 [1,3,5,7,9]. I want to say something like:
[Code]...
In this case of course it would find the value "3" in array2 and then do the appropriate action specified there.
I've got movieclips of dice called "dicePicked1", "dicePicked2", etc all the way to 6. each of these movieclips has a graphics on keyframes with labels "One" to "Six".Now I'm trying to find (in vain) a way to cross check the labels with arrays of numbers so that each time it finds a dicePicked with the appropriate label, it moves onto the next number to find. For example, I need to see if one of each dice has [1,2,3,4,5,6]. Once the program finds a dicePicked with the Label "One", it moves onto the next element which is 2 and so on. If it finds the last element (and thus all the elements), it returns true. If it doesn't find an element (for example none of the dicePicked have a Label "Three") then it returns false. I'm trying to find a system that can accommodate different combinations and some with the same numbers multiple times (for example 3 different dicePicked have the label "three")
I'm trying to make an array with different color values. My problem is that when I do... teamColor[i] = currentColor... All color values in my array turn into the currentColor. (I would upload more code, but that would be a massive mess, considering that I have code everywhere with references from movie clips that are as far as 3 layers deep. However, this would be irrelevant anyways (probably), because I tested this with color values on my main timeline, without any references to or from anything deeply nested). I would like to add that I tried adding strings in there and that the strings remained their original, intended, value, while the color exhibited the same phenomenon.
I changed my code by creating separate variables for each color instead of putting the variables into an array (not what I really wanted to do, but it works). My code looks like this: if (teamColor != 0) { this["team"+teamColor+"Color"] = new ColorTransform(0,0,0,1,currentColor.redOffset,currentColor.greenOffset,currentColor.blueOffset,) teamColor = 0 namebox.addboxes()//function in a movieclip }
TeamColor is now an int that is changed based on which box a user clicks from a movie clip that has a dynamically generated name, based off of what the variable value in a loop was when it was created. (E.G: 'tempboxname[ttns].name = i;') teamColor is then equal to that name when the user clicks it. I have another movieclip with colors in it and the above function is called to check if any teamColor change has occurred, and if it has, act accordingly. (The idea of having teamColor equal to 0 is so that if the user clicks twice, nothing changes. I other conditionals for other colors, all within the same function). That is how I fixed me code. It's not what I wanted, because it's not an array (meaning a seemingly infinite number of teamColors, and thus, teams) but it'll do for me.
I am trying to find the sum of one column's timings which is like '00:00:00' format. I am splitting the time string at ':' and storing into an array. Then trying to add array1[1] value to array2[1] value. Here I'm not getting type casting logic. I'm getting an error when I give int(array2[1]) += int(array1[1]) .
I'm struggling with something that shouldn't be too difficult but I can't figure it out I have a number of Arrays with different values and I want to find the common values all of the Arrays have, see example below: var arrayOne:Array = ["1","2","3"]; var arrayTwo:Array = ["1","2","7"]; var arrayThree:Array = ["1","2","9","12"]; _resultArray = ["1","2"];