Проследите, что запускает функцию - PullRequest
0 голосов
/ 09 октября 2009

закрытая функция dataLevel (): void {

        //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);

}

Ответы [ 2 ]

1 голос
/ 09 октября 2009

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

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

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

0 голосов
/ 09 октября 2009

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

Нечто подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...