Actionscript 3 :: Collecting And Identifying Functions Within An Array?
Dec 28, 2011
I want to do something where I collect functions to be invoked later when a certain condition is met. E.g.
function doSomething(someArg:Object):void {
if (conditionIsFalse){
operationsToDoWhenConditionIsTrue.push(function(){
doSomething(someArg);
[Code]...
Basically if doSomething is called twice, I only want operationsToDoWhenConditionIsTrue to hold the most recent invocation. Obviously since the invocations are wrapped in function(){} all the functions are the same. Is there any way I can accomplish what I want?
I've got to create a form with 2 fields (Name, email adress) that users can type their information into, but i then need to collect the data and store it somewhere (so i would then have a file showing everyone's names and email addresses that have been entered).I have quite a good knowledge of flash front end development but don't know alot about hooking stuff up to xml/php whatever
after strolling through the internet looking for garbage collecting of dynamic movieclips i conceded and justified to myself i should make a forum post.I'm making a small game, with many many explosions. Explosions are random swfs which i cache before using them. Problem is that although i did everything to make them ready for garbage collecting, they seem to overflow the memory.my code:
the last line, 'e.target.parent=null ', is the way i know how to make movieclips ready for garbage collecting. But if i uncomment the line, I get this error:
Code: ReferenceError: Error #1074: Illegal write to read-only property parent on example03_fla.MainTimeline. at Explosions/::doneHandler() at flash.events::EventDispatcher/
example03_fla is the timeline of the supposed movieclip i'm trying to delete, not the document fla.
I'm trying to get my head around optimising AS3 code and clearing things out for garbage collection.
I understand that each time an item is referred to in the code it has its reference count increased by one, so I was wondering if there is a trace option I can use to see how many references each of my objects has?
I can then see where things are getting left behind (if they are) and where I can make optimise better.
I think it would help me work out several issues if I was able to do this
What's necessary to do when removing an object to make sure there are no memory leaks? Do you have to remove all children? Or just remove all event listeners? Or both?
I'm currently working on a game where every "Step" - defined by a global time modifier - everything on screen calculates where it's next position will be, then uses tweenlite to animate itself to that location. This program runs for about 10 seconds before it eats 100% of my CPU. iMac i5 quad core, so it's not the hardware.
The problem is specifically in the following snippet, and the peculiar thing is if I teleport everything to it's next position (i.e. don't tween it there) the CPU is stable at 6% (where flash IDE consumes 4%). Does anyone know why these tweens are just stacking and stacking and never garbage collecting? (This is what I assume the problem is, as I can't find another explanation as to why the problem only exists when i TWEEN to the next location)
I want to add tracking to our Flash-based media player so that we can provide analytics that show what sections of videos are being watched (at the moment, we just register a view when a video starts playing)
For example, if a viewer watches the first 30 seconds of a video and then clicks away to something else, we want the data to reflect that. Likewise, if someone watches the first 10 seconds, then scrubs the timeline to the last minute of the video and watches that, we want to register viewing on the parts watched and not the middle section.
My first thought was to collect up the viewing data in the player and send it all to the server at the end of a viewing session. Unfortunately, Flash does not seem to have an event that you can hook into when a viewer clicks away from the page the movie is on (probably a good thing - it would be open to abuse)
So, it looks like we're going to have to make regular requests to the server as the video is playing. This is obviously going to lead to a high volume of requests when there are large numbers of simultaneous viewers.
The simple approach of dumping all these 'heartbeat' events from clients to a database feels like it will quickly become unmanageable so I'm wondering whether I should be taking an approach where viewing sessions are cached in memory and flushed to database when they become inactive (based on a timeout). That way, the data could be stored as time spans rather than individual heartbeats.
i want to finish it in the end! i have this code which generated 20 stars and an ai player collects all of them (going for the one which is closest to it). This code was courtesy of -lauri... the code was
what i have currently is a player who moves around with the arrow keys collecting stars which appear at random moments... i wanted to make it so that the ai can also collect these stars and i am pretty sure that the code for that would be linked to what.
Suppose you have a round based RPG type game. The player issues directives to his units, your enemy AI issues directives to its units. The problem is that the functions for those directives then have to be executed in a specific order with no relation to the order they were input in and all at the same time with the push of one button.
I just need a little direction here, I just spent the last fifteen minutes searching "AS3 Array of Functions" before figuring out that maybe that's not the way you do it in AS3.
Essentially, I'm looking for the way to store functions, put them in a list to be sorted in a specific order and then execute them in said order.
Suppose you have a round based RPG type game. The player issues directives to his units, your enemy AI issues directives to its units. The problem is that the functions for those directives then have to be executed in a specific order with no relation to the order they were input in and all at the same time with the push of one button.
I just spent the last fifteen minutes searching "AS3 Array of Functions" before figuring out that maybe that's not the way you do it in AS3.Essentially, I'm looking for the way to store functions, put them in a list to be sorted in a specific order and then execute them in said order.
is it possible to sort array elements using more than one sorting function? My problem is this: I want to sort an array firstly for one property of the objects inside, then with the help of a function and again with the help of another function... I've tried doing this:
is there a way to call on my functions for one button..for example my home btn on CLICK event does 5 different functions. Is there a way to put those functions in some sort of an array and just call on that...
I have a array of MC that are placed on the stage to make up a logowhat i would like is to fade through the clips. I thought i could creat an array and atach a fade function to it but it dosn't seem to work.here is my code
function init(){ //create an array for my movie clips euro = new Array ( b1,b2,b3,b4,b5,b6,b7,b8,e1,e2,e3,e4,e5,e6,e7,e8
Is there a way to store functions in an array so that I can then call the _array[num] to call the function? The _array will be sorted that is why I am wanting to call the functions through the array.I am using the Tween class's onMotionFinished to create a series of events like pan, zoom, fade, etc.Because the order of the sequence of events will likely change based on user interaction I am not able to hard-code the onMotionFinshed to perform a specific function. So I figure I would store the functions in a function_array and use a counter var to store the current location in the sequence of events. Or maybe a "pause" & "resume" command inside of a for loop?
I have an array that I have set up that would go with a series of movie clips, and I am trying to combine them with functions that upload xml pictures--firstImage(), secondImage(), and so forth.
Here is the array that I have:
Code: var currentButtonId:Number = 0; var buttons:Array = [btn1, btn2, btn3, btn4, btn5, btn6]; function buttonRelease() {
[Code]....
It enables and disables the movieclips depending on which one is clicked. But I want to make the xml functions (firstImage(), secondImage()...) go with the buttons in sequence. So once btn1 gets pressed the firstImage() xml function gets called.
I have a array of MC that are placed on the stage to make up a logo what i would like is to fade through the clips. I thought i could creat an array and atach a fade function to it but it dosn't seem to work.
I want to be able to run functions in a certain order from an array. The code below is a non-fat version of what I want to accomplish. The problem appears when the function(scream_name) runs. Flash makes the passed variables into one variabel; sname
I have an AS3 application which seems to be leaking memory slowly while running. I've been looking for a profiler for Flex 2 / AS3 and haven't been able to find one yet, in fact I saw posts from people at Adobe saying they were working on it but no release in the short term!
Does anyone have any more news on this, or more usefully have any information on a profiler or other way it is possible to find memory allocation and usage during runtime of an AS3 application? It would really help me to identify what areas of my application are leaking memory.
I have an xml and it has items, you can trace the items in Flash, but how do I call them to allow me to identify that object getting clicked on the stage?
I have 16 layers of movieclips (one in each layer), each has been given the instance name, "line1" through to "line 16". I'm trying to figure out how to hide all of them through actionscript, so far, my code is:
for(x=1; x<17; x++){ line[x]._visible = false; }
but for some reason, it doesn't hide all the instances. I've tried typing it in seperatly, (line1._visible = false; , line2._visible = false; , etc...) and it works, but for some reason, when I use the for loop, it doesn't work..
I've been scouring the web to see how to do this, and now I'm not even sure it's possible. However, it seems there must be way. What I want to do is create a function that will take x,y coordinates and tell me what MovieClip or Sprite is at that location. I want it to happen automatically, without any MouseEvents or anything like that.
I have 16 layers of movieclips (one in each layer), each has been given the instance name, "line1" through to "line 16". I'm trying to figure out how to hide all of them through actionscript, so far, my code is:
for(x=1; x<17; x++){ line[x]._visible = false; }
but for some reason, it doesn't hide all the instances. I've tried typing it in seperatly, (line1._visible = false; , line2._visible = false; , etc...) and it works, but for some reason, when I use the for loop, it doesn't work...what am I doing wrong?
I'm still stuck on this! I've tried so many things and still can't get it to work. I've watched Tim Perkins' Lynda.com stuff and I still can't get this to work!
This is where I'm at now with the code. It works to an extent, but doesn't lock out the other bArrays when the first one is clicked. I would like the code to stop bArray2 & bArray3 from functioning when a button in bArray1 is clicked. Is this at all possible?[code]...
I have an array that I have set up that would go with a series of movie clips, and I am trying to combine them with functions that upload xml pictures--firstImage(), secondImage(), and so forth.Here is the array that I have:
ActionScript Code: var currentButtonId:Number = 0; var buttons:Array = [btn1, btn2, btn3, btn4, btn5, btn6]; function buttonRelease() {
[code]...
It enables and disables the movieclips depending on which one is clicked.
I want to make the xml functions (firstImage(),secondImage()...) go with the buttons in sequence. So once btn1 gets pressed the firstImage() xml function gets called.
How would I go about evaluating an array of strings as function calls?Something like this:
ActionScript Code: var my_mc:MovieClip; var myArray:Array = new Array("function1()", "function2()", "function3()");[code]....
I get an error "Instantiation attempted on a non-constructor".In this case, I'm trying to dynamically add linked movie symbols from the library. Perhaps I'm going about this the wrong way... ?
I want to make a graph. Specifically, a graph of a normal population distribution.I think (please correct me if I'm wrong) that the best way for me to do this is to use two arrays for coordinates and use the lineTo function to connect the dots:
- An Index array up to about 300 as the "x-axis"
- A Second array to represent the "y-axis" created using the formula for normal population applied to each entry of the index array
So I need to create these two arrays in FMX. the first array i think should be created with a For loop: for(i=0;i<a.length;i++){} The second array somehow applying my formula to each entry in array 1.I believe my methods are correct, but I am having a great deal of trouble getting the AS down properly and I can't find many good sources on it.