2009-10-09 130 views
0

私有函数dataLevel():无效{跟踪运行什么功能

 //Level 2 
     a1=new Array(b1,b2); 
     a2=new Array(b3,b4); 


     //Level 1 
     allA=new Array(a1,a2); 


     //trace if the following level exist 

     //if the following level exist, create the Branch 
     if (allA is Array==true) { 
      createBranch(this); 

      if (allA[0] is Array==true) { 
       createBranch(allA[0]); 
      } 

      if (allA[1] is Array==true) { 
       createBranch(allA[1]); 
      } 
     } 
    } 


    private function createBranch(event:Object):void { 

     trace(event.target); 

}

+0

你的问题是什么? – 2009-10-09 03:36:27

+0

好吧,你看我有3条件运行createBranch(); 在createBranch函数我想知道它由哪个运行 – Hwang 2009-10-09 03:59:18

回答

1

只是命名一个变量作为事件不会使它的Event对象(并给它一个目标属性)。使用trace(event);来跟踪传递的参数。更好的办法是将变量名改为arg1(argument1)或更有意义的东西。

private function createBranch(arg1:Object):void 
{ 
    trace(arg1); 
} 

event通常用于在事件处理程序Event类型的变量或它的子类。

0

和你一样的声音基本上是试图沿着堆栈跟踪的某些方向获得某些东西。您可以在运行时从Error异常类中获取堆栈跟踪的字符串表示形式,但只能在Flash Player的调试模式下使用。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Error.html#getStackTrace%28%29

private function createBranch(arg1:Object):void 
{ 
    var stacktrace:String = new Error().getStackTrace(); 
    //parse 'stacktrace' and do what you want here. 
} 

现在在调试版本的播放器的这只作品,'的getStackTrace()返回在标准版本空,所以这不会对任何生产应用工作。

唯一的另一种选择是将一个令牌传递给'createBranch'来表明调用来自哪里(我认为这也会决定你创建什么类型的'分支')这将是一个更好的我认为:

private function createBranch(arg1:Object, branchType:String):void 
{ 
    switch(branchType){ 
     case "type1": 
      //create your branch type1 here 
      break; 
     case "type2": 
      //create your branch type2 here 
      break; 
     case "type3": 
      //create your branch type3 here 
      break; 
    } 
} 

类似的东西。