Anthill Game Framework

Tiny framework for creating Flash games.

Инструменты пользователя

Инструменты сайта


guide:debug_console

Работа с консолью

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

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


Вывод информации

Чтобы вывести какую-либо информацию в консоль, достаточно вызвать метод log(). Указатель на этот метод хранится в AntG, поэтому вы можете в любом месте вашей программы писать так:

AntG.log("My message");

В качестве второго аргумента вы можете задать тип вашего сообщения. Тип сообщения влияет только на цвет текста сообщения добавляемого в консоль. На данный момент существует четыре типа:

  • AntConsole.DEFAULT (эквивалент «default») — белый цвет текста;
  • AntConsole.ERROR (эквивалент «error») — красный цвет текста;
  • AntConsole.DATA (эквивалент «data») — зеленый цвет текста;
  • AntConsole.RESULT (эквивалент «result») — желтый цвет текста.

Пример использования вывода сообщений с указанием типа:

AntG.log("My message", AntConsole.RESULT);

Или можно использовать эквивалентное значение типа String, если не хочется делать импорт AntConsole в свой класс:

AntG.log("My message", "result");

С версии Anthill 0.3.1, если вам необходимо вывести в консоль несколько однотипных сообщений, то вы можете использовать методы beginLog() и endLog():

AntG.debugger.console.beginLog(AntConsole.RESULT); // или просто "result"
AntG.log("line 1");
AntG.log("line 2");
AntG.log("line 3");
AntG.debugger.console.endLog();

Так же с версии Anthill 0.3.1 вы можете задавать произвольные цвета для сообщений в консоли. Для этого вместо типа сообщения, вы можете указывать непосредсвенно сам цвет в формате 0xFF0000 или использовать цветовые константы из класса AntColor. Например:

AntG.log("Some message", AntColor.LIME);

Или:

AntG.log("Its a lime message", 0x00FF00);

Работа метода log() похожа на работу метода trace(), то есть если вы передадите в метод log() указатель на объект, то для этого объекта будет вызван метод toString() и его результат будет отображен в консоли. Например:

var actor:AntActor = new AntActor();
AntG.log(actor);

Выведет: [AntActor]


Системные команды

По умолчанию в консоль встроено несколько важных системных команд которые начинаются со знака минус '-':

  • -help — выводит список всех системных команд с кратким пояснением;
  • -clear — очищает окно консоли;
  • -regs — выводит список зарегистрированных команд с кратикими пояснениями. Пояснения указываются при регистрации новой команды в консоли.
  • -sys — выводит некоторую системную информацию начиная от количества занятой памяти Flash приложением и заканчивая версией операционной системы.
  • -gc — активирует сборщик мусора и выводит список объектов добавленных в AntMemory для отслеживания утечек. Полноценно работает только в Debugger версии Flash Player. Подробнее...

Пользовательские команды

Чтобы добавить в консоль свою команду, достаточно вызывать метод registerCommand(). Доступ к этому методу можно получить через AntG, например:

// Метод который будет выполнен при вызове команды
private function myCommandMethod():void
{
	AntG.log("myCommandMethod был выполнен!");
}

// Регистрация команды и метода в консоли
AntG.registerCommand("my_command", myCommandMethod, "My test method");

Теперь если мы наберем в консоли my_command и нажмем «Enter», то увидим результат работы нашей команды. При регистрации новой команды, первым аргументом мы указываем текстовый идентификатор команды, вторым аргументом указываем метод который будет выполнятся при вводе этой команды, а третьим аргументом указываем краткое пояснение для команды.

Примечание: Текстовые пояснения могут быть очень полезной штукой. За время работы над проектом некоторые, редко используемые команды могут подзабыться и если вы заранее позаботились о пояснениях, то вам не придется копаться в коде чтобы вспомнить их синтаксис. Достаточно будет ввести в консоль команду -regs и вы увидете все свои команды с описаниями.

Чтобы удалить ранее зарегистрированную команду, достаточно вызвать метод unregisterCommand() в качестве аргумента которого может быть имя удаляемой команды или указатель на метод который выполняется при вызове команды.

AntG.uregisterCommand("my_command");

Или

AntG.unregisterCommand(myCommandMethod);


Пользовательские команды с аргументами

Порой обычных команд не достаточно чтобы выполнять полноценную отладку игры или даже вмешиваться в её работу и часто появляется необходимость по мимо самой команды передавать в выполняемый метод какие-либо аргументы в виде значений. Для этого вы можете регистрировать расширенные команды с аргументами.

Внимание: Информация о регистрации команд представленная далее, актуальна для версии Anthill 0.3.1 и старше.

С версии Anthill 0.3.1 регистрация команд с аргументами была переработана. Данные изменения позволили реализовать обработку ошибок непосредственно консолью при вводе команд, сняв при этом заботу о валидации вводимых данных с разарботчика. Консоль автоматически проверяет количество введеных аргументов для команды и соотвествие типов и если количество аргументов или типы данных не соотвествуют установленным, то будет выведено соотвествующее предупреждение без возникновения каких-либо ошибок.

Пример регистрации команды с аргументами:

// Метод для команды
private function testCommand(aName:String, aValue:int):void 
{
  AntG.log("Test command with arguments: " + aName + " and " + aValue + ".", AntConsole.RESULT);
}

// Регистрация команды с аргументами.
AntG.registerCommandWithArgs("test_args", testCommand, [ String, int ],
  "Its a test command with arguments"); 

Метод регистрации команды с аргументами похож на метод registerCommand(), единственное его отличие заключается в том, что третьим аргументом мы указываем массив классов с типами передаваемых аргументов в метод команды. Это позволяет выполнять проверку для передаваемых аргументов и сообщать о несоотвествиях во время вызова команды, а так же автоматически генерировать краткую справку об ожидаемых аргументах при вызове команды -regs.

Для вызова зарегистрированной команды с аргументами мы должны набрать в консоли следующее: test_args box 45 после чего мы увидим в консоли следующий результат: Test command with arguments: box and 45.

При вводе команды аргументы разбиваются обычным пробелом.

Для удаления зарегистрированных команд с аргументами используется тот же метод удаления, что и для обычных команд unregisterCommand().


«Горячие клавиши»

Для взаимодействия с консолью вы можете использовать следующие клавиши:

  • ~ — скрыть/отобразить окно консоли (отладчика);
  • PageUp — прокрутить содержимое консоли вверх;
  • PageDown — прокрутить содержимое консоли вниз;
  • UP — предыдущая введенная команда;
  • DOWN — следующая введенная команда.

1) Чит — от англ.слова «Cheat» что в переводе с англ: обманывать. Читами являются некие команды или действия которые могут активировать бесконечный запас патронов, режим бессмертия и т.п.
guide/debug_console.txt · Последние изменения: 30.04.2013 13:57 (внешнее изменение)