-
It's not 1997 ?!
[RESOLVED] Functions Delema
So, how do I explain this?...
I'm working with all dynamic stuff.
On the main frame, I have a function, with parameters.
Each tile (there's 25), holds it's own call on the function.
Main Frame Function
Code:
function tilePlant(plant,id,level,plantStrand){
//do stuff
return plant;
}
Call of the function
Code:
on (release) {
_root.a1[1] = _root.tilePlant (_root.a1[1],1,11,_root.plant1[4]);
// _root.a2[1] = _root.tilePlant (_root.a2[1],2,12),_root.plant2[4];
// _root.a3[1] = _root.tilePlant (_root.a3[1],3,13),_root.plant3[4];
// ect..
}
So, I need to call the function from an external button that works for all 25.
But I can't specify the call of the function from there, it breaks the dynamics.
Could I like, somehow send the call of the function to the button somehow?
like
Code:
sender = "_root.a1[1] = _root.tilePlant (_root.a1[1],1,11),_root.plant1[4];";
and call the sender?
Does that make sense? Or am I a babbling fool?
Last edited by mrgrim333; 11-30-2009 at 08:07 PM.
Man, I need a new signature.
-
M.D.
create some objects, you can store information like that.
Code:
var plant //whatever plant is
var f1 = {};
f1.func = _root.tilePlant;
f1.args = [plant, 1, 11, _root.plant1[4]];
_root.a1[1] = f1;
then you can call the function like so:
Code:
_root.a1[1].func.apply(_root.a1[1].args, this);
-
It's not 1997 ?!
So I need _root.a1[1] to be dynamic too.
Would I just do like
Code:
var plant //whatever plant is
var f1 = {};
f1.func = _root.tilePlant;
f1.args = [plant, 1, 11, _root.plant1[4]];
f1.base = _root.a1[1];
and call
Code:
base.func.apply(base.args, this);
Sorry if I'm not getting it, oop is a newer concept to me
Last edited by mrgrim333; 11-30-2009 at 08:14 PM.
Man, I need a new signature.
-
M.D.
what you should be doing is storing function calls (not actual calls themselves, but the components of the call i.e the function and the arguments) in an array then sending that data to a button when you need it.
the object "f1" represents a function call, maybe call it something like "call1". So this is how we would create our first call object
Code:
var call1 = {} //create a new object
call1.func = _root.tilePlant //pointer to the function we want to run
call1.args = [something, something else, something else again] //an array of arguments which gets passed to the function
thats it, thats all a function call needs to know, if you want extra data you can add it if you wish, just like you had above:
Code:
call1.base = _root.a1[1];
but its not necessary for the call. You would then add this call to an array of other calls.
Code:
calls = new Array();
calls.push(call1); //add the call to an array
now we have an array with 1 call, you could now add your 25 other calls in the same way:
Code:
calls.push(call2);
calls.push(call3);
calls.push(call4);
etc. However you want to do it, it doesn't matter. Next you set a call to the button:
Code:
button.callObject = calls[0]; //give the button the first call
button.onRelease = function() {
this.callObject.func.apply(this.callObject.args, this); //call the function with the arguments
//here we can do something with extra data in the callObject
trace(callObject.base); //traces _root.a1[1];
}
-
It's not 1997 ?!
PM'd with the file, so you can help a noobie.
Man, I need a new signature.
-
It's not 1997 ?!
Last edited by mrgrim333; 12-03-2009 at 05:38 PM.
Reason: Completely solve my problems :D
Man, I need a new signature.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|