2009-10-09 4 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

В чем ваш вопрос? –

+0

ну, видите ли, у меня есть 3 условия, которые запускают createBranch(); в функции createBranch, я хотел бы знать ее прогон, какой из них – Hwang

ответ

1

Просто имя переменного, как события не сделать его Event объекта (и дать ему цель имущество). Используйте trace(event); для отслеживания переданного параметра. Еще лучше, измените имя переменной на arg1 (argument1) или что-то, что имеет больше смысла.

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

event обычно используется для переменных типа Event или его подклассов в обработчик событий.

0

Похоже, вы в основном пытаетесь получить что-то вдоль линий стека. Вы можете получить строковое представление трассировки стека из класса исключения ошибок во время выполнения, но только в режиме отладки в 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; 
    } 
} 

Что-то в этом роде.