Использование окна Output
В режиме теста, окно Output отображает информацию, помогающую проверить и отловить ошибки в клипе. Некоторая информация, типа ошибок синтаксиса, отображается автоматически. Можно отображать другую информацию, используя команды списка объектов и списка переменных. См. Использование списка объектов и Использование списка переменных.
Если в скриптах используется команда trace, во время воспроизведения клипа в окно Output выводится специфическая информация. Она может содержать примечания о состоянии клипа или значение выражения. См. Использование trace.
Вывод окна Output:
1 | Если клип не запущен в режиме теста, выбрать Control > Test Movie. |
2 | Выбрать Window > Output. |
Откроется окно Output. | |
Замечание: Если в скрипте есть ошибки синтаксиса, окно Output открывается автоматически.
3 | Для работы с содержанием окна Output, используется его меню: |
Выбрать Options > Copy для копирования содержания окна Output в буфер обмена. | |
Выбрать Options > Clear для очистки окна. | |
Выбрать Options > Save to File для записи содержания окна в текстовый файл. | |
Выбрать Options > Print для распечатки его содержимого. | |
Использование Отладчика
Отладчик позволяет находить ошибки в клипе, во время его воспроизведения во Flash Player. Можно просматривать всю внутреннюю структуру основного и подгружаемых клипов и изменять значения переменных и свойств, чтобы определить их правильные значения. Затем можно вернуться к скриптам и отредактировать их с учетом результатов, полученных при отладке. Для использования Отладчика, необходимо запустить Flash Debug Player, специальную версию Flash Player.
Flash Debug Player устанавливается автоматически при инсталляции пакета Flash 5. Он позволяет в своем окне просматривать список объектов и пары: переменные - их значение и свойства - из значения.
Для включения Отладчика:
Выбрать Window > Debugger.
Это открывает Отладчик в неактивном состоянии. Никакая информация не появится в его окне, пока не будет выдана команда от Flash Player.
Для активизации Отладчика в режиме тестирования:
Выбрать Control > Debug Movie.
Это откроет Отладчик в активном состоянии.
Использование списка объектов
В режиме теста команда List Objects показывает уровень, кадр, тип объекта (шейп, мувиклип или кнопка) и путь к мувиклипу в иерархическом списке. Это особенно полезно для нахождения правильного пути и имени мувика. В отличие от Отладчика, список не обновляется автоматически во время воспроизведения клипа, каждый раз, когда требуется выдать очередную информацию в окне Output, необходимо повторно выбрать команду List Objects.
Вывод списка объектов в клипе:
1 | Если клип не запущен в режиме теста, выбрать Control > Test Movie. |
2 | Выбрать Debug > List Objects. |
Список всех текущих объектов на сцене будет показан в окне Output, как в следующем примере:
Layer #0: Frame=3 Movie Clip: Frame=1 Target=_root.MC Shape: Movie Clip: Frame=1 Target=_root.instance3 Shape: Button: Movie Clip: Frame=1 Target=_root.instance3.instance2 Shape:
Замечание: Команда List Objects не вносит в список все ActionScript data objects. В этом контексте, объект является формой или символом на сцене.
Использование списка переменных
В режиме теста команда List Variables отображает список всех текущих переменных в клипе. Это особенно полезно для нахождения правильного пути и имени переменной. В отличие от Отладчика, список не обновляется автоматически во время воспроизведения клипа, каждый раз, когда требуется выдать очередную информацию в окне Output, необходимо повторно выбрать команду List Variables.
Вывод списка переменных в клипе:
1 | Если клип не запущен в режиме теста, выбрать Control > Test Movie. |
2 | Выбрать Debug > List Variables. |
Список всех текущих переменных клипа будет показан в окне Output, как в следующем примере:
Level #0: Variable _root.country = "Sweden" Variable _root.city = "San Francisco" Movie Clip: Target="" Variable _root.instance1.firstName = "Rick"
Использование списка Watch
Для контроля критических переменных и управления ими, можно отметить нужные переменные для добавления их в список Watch. Этот список отображает абсолютный путь к переменной и ее значение. В список Watch можно также вводить новое значение переменной.
Только переменные могут быть добавлены в список Watch, свойства или функции не могут.
Переменные замаркированные для списка Watch и переменные в списке Watch
Для добавления переменных в список Watch, сделайте одно из следующего:
Во вкладке Variables, right-click (Windows) или Control-click (Macintosh) на нужной переменной и выбрать Watch в открывшемся контекстном меню. Рядом с переменной появится синяя точка. | |
Во вкладке Watch, right-click (Windows) или Control-click (Macintosh) и выбрать Add в открывшемся контекстном меню. Ввести имя переменной и ее значение в соответствующие ячейки. |
Удаление переменной из списка Watch:
Во вкладке Watch, right-click (Windows) или Control-click (Macintosh) и выбрать Remove в открывшемся контекстном меню.
Использование trace
Когда в скрипте используется команда trace, в окно Output выводится информация, являющаяся аргументом этой команды. Например, при тестировании клипа или сцены, можно выводить специальные программные комментарии или какие-то данные, как результат нажатия кнопки или воспроизведения определенного кадра. Команда trace аналогична JavaScript оператору alert.
Когда в скрипте используется команда trace в качестве ее аргумента можно использовать выражение. Его значение будет выведено в окно Output в режиме теста, как это сделано в следующем примере:
onClipEvent(enterFrame){ trace("onClipEvent enterFrame " + enterFrame++) }
Команда trace возвращает значение, которое выводится в окне Output.
О строке состояния
После активизации Отладчика, в его строке состояния отображается URL или локальный файловый путь к клипу. Flash Player может запускаться в различных формах в зависимости от среды воспроизведения. Строка состояния Отладчика отображает тип Flash Player, управляющего клипом:
Test-movie mode | |
Stand-alone player | |
Netscape plug-in | |
Netscape plug-in используется с Netscape Navigator под Windows и Macintosh, и Microsoft Internet Explorer под Macintosh. | |
ActiveX control | |
ActiveX control используется с Internet Explorer под Windows. |
Окно списка
Когда Отладчик активен, он выдает в своем окне список со всей структурой клипа в виде дерева. Можно открывать и закрывать его ветви, чтобы внимательно изучить все их содержимое. Если во время воспроизведения происходит подгрузка или удаление мувиклипа, в списке дебагера эти изменения отражаются немедленно в реальном времени. Можно изменять размер окна списка, перемещая горизонтальный разделитель внутри окна или просто изменяя размер всего окна Отладчика.
Ошибки в ActionScript: Обзор
Уровень сложности некоторых команд, особенно в комбинации друг с другом, может создавать проблемы во Flash-клипах. Как и на любом другом языке программирования, здесь тоже можно написать неправильный ActionScript, который вызовет появление ошибок в клипе. Использование специальных методов упрощает устранение проблем, когда что-то ведет себя неожиданно.
Flash имеет несколько инструментов, помогающих проверить создаваемый клип в режиме теста или в броузере. Отладчик (Debugger - Дебагер) показывает иерархический список клипов, загруженных в настоящее время во Flash Player. Здесь также можно просматривать текущие значения всех переменных и свойств и изменять их во время воспроизведения клипа. В режиме теста в окно Output выводятся сообщения об ошибках и списки переменных и объектов. Можно также в скриптах использовать команду trace для вывода своих комментариев, значений переменных и выражений в окно Output.
Основные принципы поиска ошибок
Если, при написании скриптов, Вы будете придерживаться данных рекомендаций, ваши клипы будут содержать меньшее количество ошибок. Используйте следующие основные принципы, помогающие предотвращать ошибки или находить их быстро, когда они возникают.
Использование хороших авторских методов
Сохраняйте разные версии клипа во время работы над ним. Выберите File > Save As для сохранения текущей версии под новым именем каждые пол-часа. Это позволит легко локализовать начало возникшей проблемы или, при необходимости, начать работу снова с той версии, в которой ее еще не было.
Тестируйте свою работу постоянно и делайте это как можно чаще и всякий раз, когда Вы вносите какие-то изменения или перед сохранением очередной версии клипа. Выберите Control > Test Movie, чтобы запустить клип в режиме теста.
В некоторых ситуациях (например при разработке intranet site) Вы можете заранее знать тип броузера и платформу Вашего клиента. Если же Ваш клип предназначен для демонстрации в сети, важно проверить его в различных броузерах на всех доступных Вам платформах 1.
Возьмите за практику следовать этим методам:
Используйте команду trace для вывода каких-то своих комментариев в окне Output. См. Использование trace. | |
Используйте команду comment для включения комментариев в свои скрипы. См. Comments. | |
Выработайте и используйте единые принципы в написании имен при идентификации элементов в скриптах. Например, хорошая идея не использовать символ пробела в именах 2. Начинайте имена переменных и функций с символов в нижнем регистре и используйте заглавную букву для каждого нового слова, включаемого в имя (myVariableName, myFunctionName). Начинайте имена функции конструктора с заглавной буквы (MyConstructorFunction). Важно выбрать стиль, имеющий для Вас смысл и следовать ему в своей работе. | |
Назначайте переменным осмысленные имена, в зависимости от их содержания. Например, переменная с информацией о последней нажатой кнопке могла бы быть названа lastButtonPressed. Имя типа foo затруднит запоминание того, что содержит переменная. | |
Используйте редактируемые текстовые поля на guide слоях для слежения за значениями переменных, как альтернативу использования Отладчика. | |
В режиме редактирования используйте Movie Explorer для просмотра списка объектов и всех команд в клипе. См. Using Flash. Flash Help | |
Используйте команду for...in для прогона в цикле свойств мувиклипов, включая дочерние мувиклипы. Можно использовать команду for...in с командой trace для отсылки списка свойств в Output окно. См. Повторение команды. |
Использование контрольного списка поиска ошибок
Как в каждой среде создания скриптов существуют некоторые ошибки, которые обычно делают те, кто пишет эти скрипты. Этот список содержит некоторые рекомендации для нахождения таких ошибок.
Удостоверитесь, что находитесь в режиме теста. | |
Только простая кнопка и команды расположенные в кадре (frame actions), например, gotoAndPlay и stop будут работать в режиме редактирования. Выберите Control > Enable Simple Frame Actions или Control > Enable Simple Buttons для включения исполнения этих команд. | |
Удостоверитесь, что у Вас не конфликтуют между собой скрипты прописанные в кадрах на разных слоях клипа. 3 | |
Если вы работаете с панелью Actions в нормальном режиме (Normal Mode), удостоверитесь, что опция expression имеет соответствующее значение для каждого конкретного выражения. | |
Если она не включена, значение будет передаваться как строка. См. Использование операторов для управления значениями в выражениях. | |
Удостоверитесь, что ActionScript элементы не имеют одинаковых имен. | |
Хорошая идея называть каждую переменную, функцию, объект и свойство уникальным именем. Исключением могут быть локальные переменные, хотя внутри области их действия они тоже должны быть уникальны, и многократно используемые в качестве счетчиков. См. Область действия переменной. |
От редактора:
Конечно это полезно, но не всегда возможно, особенно со всякими экзотическими броузерами и платформами, но здесь может успокаивать мысль, что в процентном отношении всех "прочих" не так уж и много. В то же время проверить работу клипа в двух основных комбинациях NC+Win и IE+Win, не просто хороший тон и признак профессионального поведения, а крайняя необходимость!..
Так же не следует использовать символ дефиса ("-") в именах, например, my-Cool-Movie. Flash Player воспримет дефис в качестве оператора "минус" и результат работы скрипта, содержащего такое имя, будет непредсказуем. В этих случаях лучше использовать символ подчеркивания, например, my_Cool_Movie.
Хорошим стилем является выделение отдельного слоя для помещения в него всех кадровых команд (frame actions), а не разносить их по всем слоям клипа.
Отображение и изменение переменных
Вкладка Variables (Переменные) в Отладчике отображает имена и значения любых переменных в клипе. Если изменить значение переменной во вкладке Variables, то это изменение в реальном времени отразится в воспроизводимом в данный момент клипе. Например, чтобы сделать проверку на пересечение в игре, можно ввести значение соответствующей переменной для позиционирования шара рядом со стенкой.
Показ переменных:
1 | Выберите мувиклип, содержащий переменную, в окне со списком объектов. |
2 | Нажмите на вкладку Variables. |
В процессе воспроизведения клипа окно со списком объектов обновляется автоматически. Если мувиклип удаляется из основного клипа, он также удаляется из списка объектов в Отладчике и удаляются переменные, входящие в него.
Изменение значения переменной:
Выделите значение и введите новое.
Значение должно быть постоянным значением (например, "Hello", 3523 или "http://www.macromedia.com"), не выражением (например, x + 2 или eval("name:" +i)). Значение может быть строкой (любое значение, заключенное в кавычки ("")), числом или булеаном (true или false).
Переменные Object (Объекта) и Array (Массива) отображаются во вкладке Variables. Нажмите на Add (+) кнопку, чтобы видеть их свойства и значения. Однако, вводить значения объекта или массива (например, {name: "I am an object"} или [1, 2, 3]) в полях их значений нельзя.
Замечание: Для вывода значения выражения в режиме теста, используйте команду trace. См. Использование trace.
Отображение свойств клипа и их редактирование
Вкладка Properties (Свойства) Отладчика отображает все значения свойства любого мувиклипа. Если изменить значение свойства, то это изменение в реальном времени отразится в воспроизводимом в данный момент клипе. Некоторые свойства клипа предназначены только для чтения и не могут быть изменены.
Показ свойств мувиклипа:
1 | Выберите мувиклип в окне со списком объектов. | |
2 | Нажмите на вкладку Properties. | |
Вкладка Properties в Отладчике.
|
||
Изменение значения свойства:
Выделите значение и введите новое.
Значение должно быть константой (например, 50 или "clearwater"), а не выражение (например, x + 50). Значение может быть строкой (любое значение, заключенное в кавычки ("")), числом или булеаном (true или false). Нельзя ввести значение объекта или массива (например, {id: "rogue"} или [1, 2, 3]) в Отладчик.
Для большей информации, см. Строка и Использование операторов для управления значением в выражениях.
Замечание: Для вывода значения выражения в режиме теста, используйте команду trace. См. Использование trace.
Включение режима отладки в клипе
При экспорте клипа можно включить опцию, разрешающую его отладку и указать пароль. Если эта опция не будет включена, активизировать Отладчик будет нельзя.
Как JavaScript или HTML, ActionScript являются клиентскими скриптами, поэтому они потенциально доступны для просмотра пользователем. Чтобы сохранять переменные более надежно, необходимо хранить и обрабатывать их на сервере, а не во Flash-клипе.
Однако, как разработчик, Вы можете иметь другие свои секреты, типа структуры клипа, и которые Вы бы не хотели делать доступными для всех, а только для своих доверенных друзей. В этом случае Вы можете экспортировать клип с запароленной опцией включения Отладчика 1.
Включение режима отладки и установка пароля:
1 | Выбрать File > Publish Settings. |
2 | Перейти на закладку Flash. |
3 | Включить опцию Debugging Permitted. |
4 | Для установки пароля, ввести его в поле Password. |
Без знания этого пароля, Вы не сможете запустить Отладчик. Если при экспорте пароль не будет введен, то включить Отладчик можно будет без пароля. | |
Активизация Отладчика в окне броузера:
1 | Right-click (Windows) или Control-click (Macintosh) откроет контекстное меню Flash Debug Player 2. |
2 | Выбрать Debugger. |
Замечание: Можно использовать Отладчик для контроля только одного клипа одновременно, при этом Flash должен быть открыт.
Контекстное меню Flash Debug Player
От редактора:
На мой взгляд совершенно надуманная ситуация, т.к. во-первых своим друзьям я могу и так все рассказать и показать, во-вторых, с появлением таких мощных сторонних дебагеров, как Action Script Viewer ( http://www.buraks.com/asv/ ), все секреты, скрываемые внутри SWF-файла, стали секретами Полишенеля...
У меня не получилось включить эту опцию в Netscape Communicator под Windows, в Internet Explorer все сработало, как здесь описано. Возможно Netscape Flash Plug-in 5.0 r30 для Windows ее не поддерживает, хотя однозначно утверждать этого не берусь. На других платформах не тестировал.