Доступ к функции верхнего уровня, когда у класса есть функция с тем же именем - PullRequest
0 голосов
/ 16 декабря 2011

Хорошо, задним числом это кажется глупой проблемой, с которой я столкнулся, и в первую очередь не должен был это делать.

У меня есть класс Debug с функцией с именем trace внутри.который помещает TextField на сцену и выводит текст.

Теперь я пытаюсь заставить функцию Debug.trace() выполнять "нормальную" трассировку отладки также изнутри самой стороны.

конечно, это вызывает рекурсивный цикл.

Я пытаюсь выяснить, как я могу получить доступ к верхнему уровню отдельно.Я попытался использовать пространства имен, такие как AS3 :: trace, но безуспешно.

Я знаю, что решение состоит в том, чтобы переименовать мою функцию, чтобы остановить конфликт, но я хотел бы, чтобы это было последним средством.Таким образом, люди, предлагающие РАЗНОЕ решение, были бы полезны.

Он используется во многих местах всего моего кода, поэтому его замена везде будет баллахом.

Спасибо за любые«разные» решения вышеописанного.

1 Ответ

1 голос
/ 16 декабря 2011

Поскольку trace() является функцией верхнего уровня, и вы «переопределяете» ее в своем классе отладки, я не думаю, что ее можно вызвать по-другому.

Возможным обходным решением может быть создание частного класса под вашим общедоступным классом Debug.Там вы можете поместить статический метод, который вы можете вызвать, который выполняет фактический trace() следующим образом:

public class Debug
{
    static public function trace(value:*) : void
    {

        /* your textfield code */

        DebugTrace.debugTrace(value);
    }
}

class DebugTrace
{
    public static function debugTrace(value:*) : void
    {
        trace(value);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...