2009-12-16 6 views

Répondre

8

Vous ne seriez pas en mesure de simplement passer le tableau args à travers comme vous avez dans votre question. Vous devez passer chaque élément du tableau args séparément.

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

udate

Après avoir lu un des commentaires, il semble que vous pouvez partir avec:

function Proxy(... args) 
{ 
    // Simple with no error checking. 
    Task.apply(null, args); 

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

juste faire attention. Les performances de apply() sont nettement plus lentes que d'appeler la fonction avec la méthode traditionnelle.

+0

Etes-vous sûr qu'il n'y a pas moyen de passer un tableau d'arguments qui obtient traduit aux arguments par AS3 encastrables? Ou y a-t-il une façon plus simple d'écrire la fonction Task, donc je n'ai pas besoin d'utiliser 'arg [0]' et 'arg [1]'? –

+2

Cette méthode semble la plus correcte. Si vous devez passer un nombre inconnu d'arguments, vous pouvez également utiliser la méthode apply sur la fonction. _obj.methodName.apply (_obj, [arg1, arg2, arg3]); –

+1

Voici la documentation sur la méthode apply. http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply%28%29 –

4

Vous pouvez également utiliser la méthode apply(thisArg:*, argArray:*):* à partir de l'objet Function.

exemple:

package

{

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); 
      } 
    } 
} 
Questions connexes