ActionScript 3.0 :: Controlling Multiple Children Created In For Loop?
Nov 15, 2011
So I'm working on a Flash version of the old "Robots!" game. In case you're not familiar: the game lays out a number of robots on a grid (number varies by level), and drops the player in the middle. As the player moves around the grid, the robots all move towards the player one grid space per player move. The object is to destroy all the robots by making them run into each other (or the rubble left from previous collisions) without letting a robot run into you.
Anyway, my robot hordes are being created on the stage through a "for" loop, and each icon is a child of variable "evilBot" which references a library item with the class name "enemy."
ActionScript Code:
function placeBots():void{
for (var c = 0; c < numBots; c++){
evilBot = new enemy;
[Code]....
I've run a trace on "evilBot.name" and verified that the children are being given instance names of "evilBot0, evilBot1 ..." and so on. But no matter what I try, I can't issue instructions (regarding movement, orientation, etc) to individual children.
Using a for loop and "this["evilBot" + x]" returns a "term is undefined" error.
If I store the instance names in an array (named "botName") and use "evilBot.name[botName[x]]", I get the error "Property evilBot0 not found on String and there is no default value."
I'm creating buttons like so: for (k=0; k<5; k++) { myLink = new LinkClass(); myLink.name = "link" + k; box.boxMC.linksMC.addChild(myLink); }
This creates 4 movieClips with the names "link0", "link1", etc. How do I remove them? I try this: box.boxMC.linksMC.removeChild(myLink); But it just removes the last one made (link3). How do I have all of them removed?
I thought this would be simple but for some reason I'm having all kinds of problems. Why won't the for loop create a new c instance each time the loop increments, like it does for sHolder and s? ...And, assuming it is possible to make it do this, how can each instance be given an identifier that can be accessed dynamically, like sHolder and s in the traceSomething function?
In this game attached I need the old Children (rats) to hurt the character when he walks into them, however only the most recently added Child is active in that way... also the rats seem to appear above the character instead of below, is there any way to resolve these issues??
I get the error: Scene 1, Layer 'Layer 1', Frame 1, Line 11 1119: Access of possibly undefined property spriteTwo through a reference with static type flash.display:Sprite. I can control child movieclips on the stage this way, so why can't I control sprites made in AS3 this way?
I am making SWFs that an interface will load and control (pause, re-start, stop, etc.).When the interface is paused, the main movie clip will pause but not it's children movie clip.Note that I didn't write the interface AS3 code. I am supplying the SWFs that are loading into the interface. The developer of the interface won't allow me to use animated movie clips in my SWFs since he can't control them with the interface. So all my animation need to be on the main timeline.Can I provide him with some AS3 code to allow the developer to control the child movie clips or is there an Event Listener scheme I could include in the child movie clips that would pause, stop, restart, etc when the main movie clip changes?
Also...in the meantime...since I currently do not have a fix at this time and since all my animations are on the main timeline, is there a way to select multiple tweened objects (movie clips and graphic on difference layers) and move or resize them across multiple keyframes?
For this example, I will use 2 classes, Entity and CSpawner. CSpawner is a children of Entity.I want to perform the following condition:if((new CSpawner()) is Entity)It works just like intended.But I want to do this test, without creating a new CSpawner object, something like this:if(CSpawner is Entity)But it doesn't work, because CSpawner is a Class.How do I perform that kind of conditional without creating a new CSpawner object?
I'm building an Xml-driven application. I create new states in a separate actionscript-class.These states all contain a DataGrid. I can switch the states in the Main.mxml.
But now I would like to access certain children of the DataGrid. In this case I would like to toggle the visibility of GridItems, from a Button in the Main.mxml.
How do I have access and apply this to the already created states ? I tried to create RemoveChilds and override/push it to the state.All I archieved was to remove an entire GridRow at the very last state, but it should be just one GridItem at every state.
The menu items are created dynamic out of empty movieclips and have the name movie + x. Now I'm trying to create a method that resets al the other movieclips to their original size and colour when one is pressed. The first problem is to adress the other ones. Even if I try to put the following in the script: movie[x]._alpha = 0; nothing happens..
for (x=1; x<=11; x++) { eval("movie" + x).onRelease = function() { var my_strNr:String = this._name
Intended idea: User is able to set a beat speed for a music making program.
I'm trying to use for (var i:Number = 0; i < (variable); i++) {"addChild" to duplicate movie clips to visibly show where the beat is and then move the movie clips at a constant rate to the left to get it out of the way and then eventually remove the child.
Problem: The movie clip isn't moving. Once it's spawned and in it's position as defined by the function, no outside function can control it.
Code: stop(); var yesorno:Boolean; var numba:int; var origbeat:MovieClip;
Is it possible to get dynamically created children of a display object instance in action script 3? Example trace(_view.getChildByName("name")) = returns name of display object (success) trace(_view.getChildByName("name").getChildByName("name2") = returns error 1061
i was wondering how to make a grid of squares with loops? also, how do i controle the clips that were dynamically created with the loop. like clip25 only?
I am using a GroupingCollection to bind my advanceddatagrid. I have used groupingcollection to group the data by date.
Now I need to select the data in the datagrid through the code. I need to loop through the adg's dataprovider and select the item that matches the criteria for the selection.
How do I loop through all of my children, and display each? I would like to know the best way to do this. my children and containerfive children, one plays every sec, 1,2,3, etc.
I have a number of MC's that I've assigned listeners to through a loop that references an xml table.
//create listeners for all biketrails mc's and designate functionsfunction createListenersbk():void{for(var i:uint=0;i<bktrlXml.row.length();i++){var mc:MovieClip =
[Code].....
I thought I'd be able to replicate the above code and somehow refernce the "idlink" children through the e.curentTarget.
I have a movie clip (mc_moviegroup) which is made of a group of many dynamic text fields. I want to loop through the dynamic text field children of mc_moviegroup and pull out their text values in a string. Does a movie clip have a property which gives the number of it's children movieclips?
how could I make a simple loop which loops through the childrens of specific movie clip and add each of them instance name lets say "iname", since I have movie clip in which childrens are not added by code.
And if I'm sure I could acces those childrens then by code like iname.x = 100?
I'm trying to make a dynamic image gallery from and xml. From my tutorials, right now i've got it so it will constantly add the next thumbnail below the other, which is fine, but I'm trying to figure out how to make it that once it reaches a certain y coordinate, it will move the x coordinate over and stack them again. So that rather one long list of thumbs, it will be a side by side stack. For some reason, I can't get it in my head how something like this would work. My goal is to have a side by side stack that I will end up putting in a movie clip that will be masked to show only 2 stacks at a time. Then when clicking a button will slide it over. I was planning to use the "movieclip.length" to calculate how far over to move it, but i haven't gotten that far yet. This is what I got:
I'm making a OSX-finder-type file browser in CS4.The Structure for the folder and files is being generated by a PHP in a XML, heres an example:(sorry the xml is not sorted, but the command i'm using in php doesn't sort it)
Flex's new States re-parents visual items that are marked with includeIn/excludeFrom. If I have a Group (MainGroup) with 5 children/elements that are state controlled, is there still a way to get a reference to MainGroup's children? mainGroup.numChildren and mainGroup.numElements don't work since the children are re-parented. At best, they show 1.
I am doing is learning flash, so what I have done is followed some tutorials and created some different images with a mask, now I trying to make them loop and I can't seem to figure out how to do it. it seems at the end of the tutorial it says I must put in a stop or the last layers do not come in to view. So I am curious as to how to get passed this problem I am having. am I doing this completely wrong?
Would it be possible (Without being extremely inefficient) to loop through a display object and reset their children's ChildIndex based on their y value?
I did this once in AS2, but as I'm trying now to code in AS3, everything has to be re-learned. I have a very simple game where the user has to navigate through an intersection without getting hit by oncoming traffic. The traffic is a single movie clip that I want to use over and over. Using an interval, I can add the movie clip as a child of a container, but once it plays it's done. Previously, I used the variable "i" and added it to the end of the instance name. Something like this did work:
I am currently working on a Flash application in which I have several vertical bars that go across the window, and when one of the bars is clicked on, the others move to either the left or the right to create space to the right of the selected bar for a large image.[URL].. I have already written enough of the script to get the bars to move to where they should be when they are clicked on, but they do it instantly--there is no show of movement between point 1 and point 2 (this being the starting and ending x coordinates for each movieclip).
If you're wondering about any of my number values, they are the way they are because the document is 800 wide, it has 5 vertical bars within it, each of them 30 wide, and the bars are 5 pixels apart when placed next to each other. Anyways, here's the script I am currently working with:
[Code]...
With this code, all the speed variable does is determine the length of the pause before the bar goes from its original x coordinate to its final x coordinate. I have tried to replace the line that reads "clip3_mc._x += speed;" with several variations ("clip3_mc._x ++;" , "clip_mc._x = clip_mc._x + 15"), but I don't think that's the issue.