2009-12-16 5 views
3

사용자 지정 메서드에서 여러 인수를 허용하려면 어떻게합니까? Like :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.apply(null, args); 

    // Call could also be Task.apply(this, args); 
} 

그냥주의 : 당신은 멀리로 얻을 수있는 것처럼

function Proxy(... args) 
{ 
    // Simple with no error checking. 
    Task(args[0], args[1], args[2]); 
} 

는 Udate

는 코멘트를 읽은 후, 그것은 보인다. apply()의 성능은 기존 메서드로 함수를 호출하는 것보다 상당히 느립니다.

+0

당신이 확실 AS3로 붙박이 인수로 변환됩니다 인수의 배열을 전달 할 수있는 방법이 없다? 아니면'arg [0]'과'arg [1]'을 사용할 필요가 없도록 Task 함수를 작성하는 더 깨끗한 방법이 있습니까? –

+2

이 방법이 가장 정확합니다. 알 수없는 인수를 전달해야하는 경우 함수에서도 apply 메소드를 사용할 수 있습니다. _obj.methodName.apply (_obj, [arg1, arg2, arg3]); –

+1

다음은 apply 메소드에 대한 문서입니다. http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply%28%29 –

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); 
      } 
    } 
} 
관련 문제