if the function-param in
public function doFirst(aString:String, bString:String,
aFunction:Function)
is a good reference to an existing function
you don't need to use the call()
to execute aFunction you can just use
public function doFirst(aString:String, bString:String,aFunction:Function) {
var newParam:String="pass it on!"
aFunction(newParam)
}
If that is what you wanted to know...
If the aFunction would be a String you should indeed use call()
_root[func].call();
-Latcho-
John Mark Hawley wrote:
You can't pass a reference to a method call like you seem to be trying to do by
'bar.doLast'. You *can* pass functions around, but not object methods -- they
no longer know what object they are supposed to act on.
See:
var a:Array = [1, 2, 3];
a.shift(); // a = [2, 3];
var shiftMethod:Function = a.shift;
shiftMethod(); // a still equals [2, 3] - this did nothing
One solution would be something like this:
public function doFirst(aString:String, aBarInstance:Bar,
aBarMethodName:String) {
trace("the first string is "+aString);
aBar["aBarMethodName"]();
}
This is pretty nasty, though. You should probably let us know what the effect
you are going for is so someone can suggest a better way, probably involving
either untangling these two objects or using mx.utils.Delegate.
-mark hawley
From: "Elie Zananiri" <[EMAIL PROTECTED]>
Date: 2006/06/29 Thu PM 02:21:47 CDT
To: [email protected]
Subject: [Flashcoders] trying to call a function passed as an argument
Hi all,
I have this method where I need to call a function passed as an argument
(kind of like in setInterval()) and I don't understand the documentation and
can't get it to work.
First of all, I don't understand how to pass the function as a parameter.
Am I passing a String or an actual Function object? Can I pass a Function
with parameters? Do I have to write the parentheses in the parameter?
Next, how do I call this function? The Function.call() function requires a
parameter but I don't get what it does...
Thanks for the help!
-Elie
Here is the structure I have:
class Bar {
public Bar() {
}
public function doLast(bString:String) {
trace("the second string is "+bString);
}
}
class Foo {
var bar:Bar;
public Foo() {
bar = new Bar();
doFirst("hello", "world", bar.doLast);
}
public function doFirst(aString:String, bString:String,
aFunction:Function) {
trace("the first string is "+aString);
// call the second function here ???
aFunction.call(??);
}
}
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com
--
John Mark Hawley
The Nilbog Group
773.968.4980 (cell)
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com