2009-12-16 33 views
3

如何接受自定義方法中的多個參數?像:在AS3方法中接受多個參數

Proxy(101, 2.02, "303"); 

function Proxy(args:Arguments){ 
    Task(args); 
} 

function Task(var1:int, var2:Number, var3:String){ 
    // work with vars 
} 

回答

8

你不能只是像你在你的問題中通過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()的性能比使用傳統方法調用函數慢得多。

+0

你肯定沒有辦法來傳遞參數數組,其被轉換至AS3內置的參數呢?或者是有更清晰的方式來編寫Task函數,所以我不必使用'arg [0]'和'arg [1]'? – 2009-12-16 13:37:47

+2

這種方法似乎是最正確的。如果您需要傳遞未知數量的參數,則也可以在函數上使用apply方法。 _obj.methodName.apply(_obj,[arg1,arg2,arg3]); – 2009-12-16 13:42:04

+1

以下是申請方法的文件。 http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply%28%29 – 2009-12-16 13:42:57

4

您還可以使用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); 
      } 
    } 
} 
相關問題