2009-10-09 75 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; 
    } 
} 

類似的東西。