3
如何接受自定義方法中的多個參數?像:在AS3方法中接受多個參數
Proxy(101, 2.02, "303");
function Proxy(args:Arguments){
Task(args);
}
function Task(var1:int, var2:Number, var3:String){
// work with vars
}
如何接受自定義方法中的多個參數?像:在AS3方法中接受多個參數
Proxy(101, 2.02, "303");
function Proxy(args:Arguments){
Task(args);
}
function Task(var1:int, var2:Number, var3:String){
// work with vars
}
你不能只是像你在你的問題中通過args數組。你必須分別傳遞args數組的每個元素。
function Proxy(... args)
{
// Simple with no error checking.
Task(args[0], args[1], args[2]);
}
UDATE
閱讀註釋之一後,它看起來像你可以逃脫:
function Proxy(... args)
{
// Simple with no error checking.
Task.apply(null, args);
// Call could also be Task.apply(this, args);
}
只是要小心。 apply()的性能比使用傳統方法調用函數慢得多。
您還可以使用Function
對象中的apply(thisArg:*, argArray:*):*
方法。
例如:
包{
public class Test{
public function Test(){
var a:Array=[1,"a"];
callMe.apply(this,a);
}
public function callMe(a:Number,b:String):void{
trace(a,b);
}
}
}
你肯定沒有辦法來傳遞參數數組,其被轉換至AS3內置的參數呢?或者是有更清晰的方式來編寫Task函數,所以我不必使用'arg [0]'和'arg [1]'? – 2009-12-16 13:37:47
這種方法似乎是最正確的。如果您需要傳遞未知數量的參數,則也可以在函數上使用apply方法。 _obj.methodName.apply(_obj,[arg1,arg2,arg3]); – 2009-12-16 13:42:04
以下是申請方法的文件。 http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply%28%29 – 2009-12-16 13:42:57