ActionScript 3.0 :: Adding/Removing Objects To/from An Array Based On A Variable?
May 8, 2009
So a small example of my situation...On my stage I have 5 items labeled item1_mc, item2_mc, item3_mc and so forth...they all have two keyframes on their respective timelines, one labeled "active" and the other "inactive". My code contains 2 arrays, inactiveArray and activeArray and a variable known as energy that regularly goes to and from 0 - 100.
What I am looking to achieve is basically the function of...
if energy >= "insert given items 'active threshold' 20, 40, 60, etc..." then add it to the activeArray, if it is not, remove it and add it to the inactive array.
all objects in activeArray gotoAndStop("active");
all objects in inactiveArray gotoAndStop("inactive");
I have tried many different ways of achieving this effect but I always end up with duplicates and extras or something doesn't move when it's supposed to, where it's supposed to, it just ends up into a giant cluttered mess and I start from scratch.
On my stage I have 5 items labeled item1_mc, item2_mc, item3_mc and so forth...they all have two keyframes on their respective timelines, one labeled "active" and the other "inactive". My code contains 2 arrays, inactiveArray and activeArray and a variable known as energy that regularly goes to and from 0 - 100.What I am looking to achieve is basically the function of...if energy >= "insert given items 'active threshold' 20, 40, 60, etc..." then add it to the activeArray, if it is not, remove it and add it to the inactive array.
all objects in activeArray gotoAndStop("active"); all objects in inactiveArray gotoAndStop("inactive");
I have tried many different ways of achieving this effect but I always end up with duplicates and extras or something doesn't move when it's supposed to, where it's supposed to, it just ends up into a giant cluttered mess and I start from scratch.
I'm making a banner rotator that reads image urls from an xml file and adds them to a sprite on the stage, then tweens them into position. Here's the relevant code:
So basically I've got a MovieClip called Jug and when the egg is clicked and dragged to the Jug I want it to disappear and then re-add itself in the place it first started. Aswell as this I want a variable to be added by 1 in value. I have tried fiddling around with this for a while now and I can't figure it out since when I remove child it gets errors. Here's the code:
I have a MC called Enemy. It contains a monster that pops out at a random time (a timer with animation inside the MC). It stays on the stage for a few seconds and then hides again. If it hides, I want it to be removed and another enemy be added instead. All the monsters are instances of Enemy MC that are inside enemies[] array.[code]
function removeFromArray(item:Object, arr:Array):Object { for(var i:uint = 0; i < arr.length; i++) { if(item == arr
[Code]....
This function searches through an array and sees if an item exists in it, if it does, it removes it and returns a reference to that item.
This works fine for most things. But I just ran into a problem where I need to remove an array from an array.
so my array looks like this [ [item1a, item1b], [item2a, item2b] ]; and i need to remove [item1a, item1b] from it. But passing in the the array to remove and the full array to remove it from does not work because i guess of the casting to an object in the parameters list. Can the functionality i want be used? if so how?
I have made a class that creates a dotted line following a moving object. The dotted line is small circle added to the stage (and to an array) every half a second at the object's position.
First I add the circles to the stage, when the object stops moving I remove them from the stage.
This, however, only works twice, after that it throws a "display object must be a child of the caller" warning.
ActionScript Code: public class Path extends MovieClip { var tInterval:Timer=new Timer(50,500); var pathArray:Array=new Array ;
The portal in my game is suppose to be unlocked after you collect all the coins. The portal is locked but when I go over a coin it neither adds to the variable or removes the movie clip by instance name of coin1 coin2 and coin 3.also if the remove movie clip doesnt need _root I've already tried it without it I know that is not the problem.
var openportal = 0; function moveStuff() { //-Very long code that is working. [code]..........
I am trying to add some Sprite objects as the contents of an array, and I would like to be able to "clear" them from the stage. I would assume that if there are loaders involved, I need to do _imgArray[i].close(); _imgArray[i].unload();
And if I am using a sprite, I can do: removeChild(_imgArray[i]); None of the above work.
Currently I try: for(i = 0; i < _localXML.length(); i++) { var tmp:BMLink = new BMLink(_localXML[i], _bw, _bh, i); _imgArray[i] = tmp; _imgArray[i].x = (_bw + _mainpad) * i; _base.addChild(_imgArray[i]); But this doesn't work.
The class instances that are populating the array are all extending sprite, but they have their own individual loaders inside w/ progress events etc.
I'm going to be building a site for a photographer and would like to be able to do something like the thumbnail navigation in this example: [URL] I'm assuming it's adding the thumbnails to the Display Object via an array based on an external XML file, and displaying them once their corresponding full-size images are loaded ... Perhaps it's building the nav simply by looking to see how many photos there are in a folder on the server (i.e. no discreet XML added for each shot). Not sure if this idea is even possible -- would like to hear from any of you if in fact it is.
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 am trying to create a card game (deck of 24 cards/6 cards will be dealt to the stage at one time (3 arrays)).
I want 6 cards to be dealt to the stage when you click the "Deal" button. I think i have the loop set up properly, the first array traces, however i can't get the cards to be added to the stage. What am i doing wrong? Once i get the first set of cards to be built to the stage, i will want to remove the previous set and the second set will be dealt to the stage once the "Deal" button is clicked again.
//code var aArray = new Array(); aArray[0]=Card1; aArray[1]=Card2;
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'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 have a game where i add some cartoonish ants, that when they are clicked, they need to be removed from stage. There are 4 differend kinds of ants, so im doing a Math.random for picking which one to add. (ant 1+2+3 have 50% chance to spawn and 4th 50%)
Code: rnd_nbr = (Math.random() * 5)+1;
I have a timer doing 10 tick, and i reset the timer to make neverending. Then i have a math random and if sentences adding mc' to the stage with movement from Tweener, and event listeners for clicks. But i cant figure out how to remove them when clicked. I have done alot of failed tries right inside the click_candy_anty function. I've left them commented out.
Code: import caurina.transitions.Tweener; var ant_index:Array = new Array(10);//index for ants var ant_number:int;
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?
Question 1Whats a good example of removing objects from stage that aren't within the stages boundries. I first tryed using a transparent box and hittesting. then i realized that you cannot hittest an object that isn't on stage, to check if needs added. so i came up with this.
Code: for (nn=-1; nn<2;++nn){ if (this.hu1.room+nn>=0 && this.hu1.room+nn<this.walls.ar.length){ for each (n in this.walls.ar[hu1.room+nn].ar){[code]....
That way it only adds the object if its not currently on the display list or am i better off just giving all objects an onscreen:Boolean variable?
I have a list of buttons that each load an external SWF when pressed. When a button is pressed, the SWF loads into a movieclip on the main timeline, and the list dissappears (so only one is loaded at a time). The main timeline moves to a frame with a back button. When the back button is pressed, I'm trying to remove the loaded SWF and make the menu visible again to load another SWF.This all works, but when I get back to the menu and try to load a new SWF, I get the error:TypeError: Error #1009: Cannot access a property or method of a null object reference.at CrystalBall/PL_LOADING()rystalBall being the first SWF I tried to load. The error fires like, four or five times too. I know it has something to do with the code trying to remove the loader before it loads it again, but I'm not sure how to fix it
I am pretty new to actionscript 3. I want to remove the movieclip on the stage and add a new movieclip but the button is within the currently running movieclip that I want removed. I am trying this function
homeArtist_btn.addEventListener(MouseEvent.CLICK, newArtist); function newArtist(e:MouseEvent):void{ removeChild(homeAni_mc); addChild(artistAni_mc);} I get these errors
the problem occurs when I remove the button, the button has been exported for actionscript, when I remove the button to change the page/page layout, when I return to the page, the button remains in its "over" state.so im wondering if there is a way to reset it either before its removed or when its added.I cannot use gotoAndStop(1);because I am working in a package file.
I have a bunch of movieclips called firstNameBtn_mc, lastNameBtn_mc and many others. I also have a bunch of movieclips whose names start with the same but instead of "Btn" they have "Arrow", like firstNameArrow_mc, lastNameArrow_mc etc.
What I want is when I click on firstNameBtn_mc it does somthing to firstNameArrow_mc, but there are so many buttons I would like to do it in the following way.
1. get the movie clip's name...something with e.currentTarget.name for example
Is it possible to, if you have an array of class names like ActionScript Code: var city01names:Array = ["pic_01", "pic_02", "pic_03" ...] make a new array which would read these names, instantiate them, and push them into a new array containing the instances of all these pictures, which I could then use for a slideshow?
I'm trying to do something that I'm not sure if it's possible. I have to add or remove multiple listeners that will trigger the same three methods (onComplete, onError and showProgress). I was trying to do something like this:
[Code]...
Is there anyway to solve this? It seems that after passing through the addListeners method, the loader instance gets lost.
I have 4 separate photogalleries, they are all swfs called by buttons with UI loaders attached. The problem is when one is called the loader remains on the stage I need to be able to remove any loader on stage BEFORE calling another page weather its a photogallery or not.Easiest explanation is how I used to do it in AS2 example 2 btns /2 load separate swfs into level1 on each btn I would have
unLoadMovie(1) LoadMovie (xxx.swf) 1
I need to do the same thing in AS3 Also, do I need to use separate loaders or can I use one loader and instance names? Below is the code I have now (btns are in two areas)
main timeline btns (all btns except photogallaries) stop(); home_btn.addEventListener(MouseEvent.CLICK, onHomeClick);
ive made a flash website containing 5 pages all accessed via flash buttonson one of the page ive tried loading a external swf file and then added event listeners to each of the buttons so when a new page is selected the swf file doesnt continue to play in the background on the other pagesthis works, however when i then try to change page again this error is displayed:ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.at flash.display:isplayObjectContainer/removeChild()atValleyViewingWebsite_fla::MainTimeline/btnClick()below is the code im using:
var Xpos:Number = 110; var Ypos:Number = 170; var swf:MovieClip;
I am creating a game and want to reward the player at the end of a level by playing an animation. I have created a timer to add the animation to the stage but cannot figure out how to remove the animation once the timer has completed counting. I am sure you wise scripters out there know the secrete to this mystery.
I've spent hours, and for all my self taught newbie-ness, I can't crack this: I have a navigation panel with several buttons. Lets call it mainNav. The mainNav buttons each add to the stage their corresponding MCs. They also remove any MCs from previous buttons currently on the stage. This is done by creating the MCs as variables, pushing those variables into an Array, and, when the mainNav button is pressed, calling the following function to remove the old (provided with assistance of the nice folks here), and then addChild(correspondingChild)