Что такое код swf_startdoaction

Содержание

Редактирование и импорт SWF-файлов | Animate

На этой странице

Animate может импортировать формат файла SWF. Однако файлы SWF обработаны и многие типы данных внутри SWF-файла невозможно повторно импортировать в Animate.

Формат SWF

Формат SWF представляет собой специальный сжатый формат, предназначенный для файлов небольшого размера с возможностью масштабирования. Для сохранения малого размера файла несколько элементов из первоначального формата Animate сжимаются в такие данные, что Animate не может их повторно импортировать.

Если при создании SWF-файла выбран параметр «защитить от импорта», Animate не позволит повторно импортировать файл. Попытка импорта защищенного SWF приводит к появлению сообщения об ошибке.

Мы рекомендуем сохранить документ в обычном формате Animate FLA перед выполнением экспорта в формат Flash Player SWF или любой другой формат файла. Это позволит позднее открывать и редактировать исходный файл.

Открытие и импорт

Открытие файла SWF («Файл» > «Открыть») открывает клип в режиме тестирования клипов.

Импорт файла SWF («Файл» > «Импорт») приводит к следующим результатам:

  • Звуки не импортируются.
  • Графические символы, содержащие анимацию, импортируются с каждым ключевым кадром анимации в новом ключевом кадре. Содержимое каждого кадра в исходной анимации преобразуются в новый графический символ, по одному для каждого кадра в исходном символе.
  • Весь макет теряется. Импорт добавляет ключевые кадры к слою, который был активен при выборе команды меню «Файл» > «Импорт», но исходная структура макета и имена слоев не сохраняются.
  • Временные шкалы клипа не импортируются. Отдельные элементы из первого кадра временной шкалы клипа импортируются, но преобразуются в графические символы. Все остальные кадры клипа, теряются.
  • Кнопки теперь рассматриваются как клипы. Графика в состоянии ключевого кадра «Не нажата» преобразуется в графические символы. Все остальное теряется.
  • Анимация не импортируется.
  • Пути движения не импортируются. Однако изображения из каждого промежуточного кадра траектории движения импортируются как отдельные изображения в отдельных ключевых кадрах.
  • Импортированные растровые изображения, используемые в клипе, успешно импортируются, но их исходные библиотечные имена не сохраняются. Они переименовываются в «Bitmap 1», «Bitmap 2» и т. д.

Дополнительная информация

Существуют инструменты сторонних производителей, которые до известной степени позволяют пользователям редактировать преобразованные SWF, а также удалять теги защиты, если авторы случайно их потеряли и теперь им требуется повторный импорт SWF. Эти инструменты не относятся к продуктам Adobe и не обеспечиваются никакими гарантиями. Кроме того, они были упомянуты лишь в плане помощи авторам в восстановлении их собственной работы; возможность злоупотребления по-прежнему остается.

На посты, размещаемые в Twitter™ и Facebook, условия Creative Commons не распространяются.

CODE STAGE

DEVELOPMENT & RESEARCH

Пересборка SWF с помощью библиотеки as3swf

Привет!
Давненько у нас не было хорошего разбойничьего налёта тематического контента — пора бы это исправить!)

Итак, как вы уже наверняка догадались из темы этого поста — речь пойдёт о применении библиотеки as3swf для редактирования SWF файла.

Для начала, расскажу немного о самой библиотеке.
Она предназначена для расковыривания SWF файлов в реальном времени — с помощью as3swf вы можете распарсить SWF файл из массива байт, пробежаться по всем его тэгам, выяснить все его характеристики (такие как частота кадров, версия и т.д.), а также, что весьма приятно, вы можете внести изменения в распарсенный SWF — удалить, добавить, заменить или изменить любой тэг, и после всех изменений сохранить SWF в массив байт. Можно даже создать SWF с нуля.
as3swf доступна для всевозможных действий на гитхабе: https://github.com/claus/as3swf

Библиотека поддерживается, автор (Claus Wahlers) доступен для общения, так что ваши Pull реквесты он заметит, если таковые будут ��
К слову, не так давно (буквально вчера) автор принял мой Pull реквест на добавление поддержки LZMA сжатия (подробнее про LZMA — тут)
Правда попробовать работу с LZMA в деле можно будет лишь после релиза 11.4.

Единственное, чего мне не хватало в этой библиотеке для ряда задач, так это полноценной поддержки парсинга и изменения ABC байткода, который содержится в тэге DoABC.
Автор as3swf начинал когда-то реализовывать подобный функционал в качестве отдельной библиотеки, но затем прекратил её поддерживать, и в данный момент этот проект уже не актуален.

С другой стороны, мне вполне понятны причины его решения — ведь для этих же целей есть замечательная библиотека as3commons bytecode, которая хоть как-то, но развивается и поддерживается: http://as3-commons.googlecode.com/svn/trunk/as3-commons-bytecode/changelog.txt
Её-то я и использовал для своих целей, но сейчас речь не о том случае.

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

Итак, вот как выглядит код, распарсивающий SWF файл:

Где swfByteArray — это массив байт с целевым SWF файлом.
Куда уж проще, да?

После распарсивания SWF, мне необходимо было заменить определенный контент, заэмбеденный во флэшку с помощью флексового тэга

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

Во-первых, появляется тэг DefineBinaryData со своим ID символа.
Также в результате использования тэга Embed появляется as3 класс с названием = НазваниеКласса_НазваниеПеременной и расширяющий класс mx.core.ByteArrayAsset.
Если представить, что мы использовали тэг Embed в классе MySuperClass пакета ru.codestage, то полное название будет ru.codestage.MySuperClass_EmbeddedDataClass.
И наконец,, появляется или дополняется тэг SymbolClass, который связывает символы с as3 классами по их id. В этот же тэг добавляются записи, когда вы прописываете линкейдж у символов библиотеки во Flash Pro.

Зная все это, нам не составит труда заменить заэмбеденный файл и ничего не сломать.
Вот, как это можно сделать средствами as3swf:

Код достаточно прозрачный и простой, не думаю, что у кого-то его понимание может вызвать сложности.
Как видите, as3swf — это мощный и гибкий инструмент (а ведь я продемонстрировал лишь малую часть всего возможного функционала), пользуйтесь им на здоровье!)

Не так давно я с его помощью реализовал для себя систему автоматического сайт-лочинга примерно за один день (бОльшая часть которого ушла на GUI :D)

Если у вас остались какие-либо вопросы или есть какие-нибудь замечания, предложения — оставляйте свои комментарии — я их обязательно прочту!

SWF файлы. Чем открыть/редактировать? Обзор программ

SWF ( Small Web Format ) – проприетарный видео-формат используемый для флеш-анимации, векторной графики, аудио и видео контента в сети Интернет.

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

Содержание:

Сфера использования достаточно разнообразна – баннеры, веб-сайты, легковесные игры (например, в социальных сетях), презентации, мультфильмы.

Открываем SWF-файлы с помощью браузера

Для открытия SWF -файлов может быть использован практически любой браузер ( Google Chrome , Mozilla Firefox , Opera , Safari , пр.).

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

В некоторых случаях Flash -плеер необходимо будет установить дополнительно.

Для установки Flash -плеер в браузер необходимо зайти на веб-сайт Adobe . Скачать установщик, нажав кнопку «Загрузить» и после окончания закачки выполнить инсталляцию.

Для открытия SWF -файла достаточно его перетащить ( drag ’ n ’ drop ) в окно браузера. Если файл не открывается, возможно, необходимо обновить Flash -плеер вашего браузера.

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

Недостатком просмотра SWF -файлов в браузере является относительно низкая функциональность (возможность паузы, перемотки, остановки видеоряда), по сравнению с плеерами.

Полезная информация:

Для конвертации видео из одного формата в другой рекомендуем воспользоваться программой Format Factory. Она способна работать с аудио, картинками, документами и прочим.

Открываем SWF-файлы с помощью Flash-плеера

Существует достаточно большое количество платных и бесплатных Flash -плееров, которые можно найти в Интернет-сети. Функционал бесплатных плееров, по сути, не отличается от платных аналогов.

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

Данная функция реализована благодаря внушительной библиотеке кодеков встроенной в проигрыватель.

Gnash (слово образовано от GNU и Flash) — плеер и плагин, выпущенный под лицензией GPL, с целью замены проприетарных программ (Adobe Flash).

Цель разработчиков Gnash — максимально приблизить функционал проекта к проприетарному плееру от Adobe.

Работает в UNIX-среде.

Swfdec — свободный проигрыватель файлов распространяемый по GPL-лицензии.

Представлен в виде плагина для браузеров поддерживающих NSPlugin-интерфейс (Mozilla Firefox, Opera, Konqueror) и плеера. Работает в UNIX- и BSD-подобных операционных системах.

Редактирование SWF-файлов

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

С помощью бесплатного редактора SwiX можно внести изменения непосредственно в SWF-файл, без потери исходного качества (изменяется только отредактированный компонент), все что необходимо сделать это открыть файл, внести и сохранить изменения.

Интерфейс редактора довольно прост и состоит из панели инструментов, каталога ресурсов и xml-редактора.

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

Платный редактор Flash Decompiler Trillix с русскоязычным интерфейсом.

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

Редактор имеет функцию пакетного конвертирования файлов, позволяющая выбрать пакет файлов для конвертации, а вам заняться более полезными делами.

Одной из ключевых особенностей данного редактора является возможность просмотра изменений «на ходу», не нуждается в дополнительной установке Flash Studio и Adobe Flash.

Цена однопользовательской лицензии составляет 80 долларов.

Редактор SWF-файлов Sothink SWF Quicker является достаточно мощным приложением, позволяющим не только редактировать, но и создавать красочные, анимационные баннеры, флеш-игры, ролики и многое другое.

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

С помощью редактора может быть отредактирован любой элемент SWF-файла.

К особенностям программы следует отнести наличие редактора с подстветкой кода, применения Flash-фильтров для добавления специальных визуальных эффектов к объектам.

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

Цена лицензии составляет 85 долларов.

SWF — чем открыть файл

Чем открыть swf файлы? Поможет расширение браузера google, которое можно найти в магазине гугл хром

HelperLife

Формат файла SWF: что это такое, с помощью каких программ можно открыть и конвертировать. Расскажем о широких возможностях формата.

Рядовые пользователи компьютера и сети Интернет редко сталкиваются с форматом SWF, разве что в виде рекламных флеш-баннеров на сайтах. Этот стандарт имеет большие возможности и множество способов использования. Самое стандартное представление – анимация различного вида, для открытия которой браузер требует установку флэш-плеера. В современных версиях популярных браузеров такой плагин есть по умолчанию и пользователю остается только включить его в момент необходимости.

SWF – что это за формат

В 1995 году компанией FutureWave Software был разработан стандарт SWF – что это за формат и какие возможности он предлагает, компьютерные специалисты узнали позже.
SWF – это патентованный формат корпорации Adobe Systems, предназначенный для отображения на веб-страницах флеш-анимаций, видео и аудио контента, а также других графических файлов. Сфера применения очень разнообразна: от простых презентаций до полноценных сайтов с внедрением технологий XML и PHP. Положительные отличия: видеофайлы грузятся и воспроизводятся быстрее, картинки при масштабировании не имеют значительных искажений.
Первоначально, владельцем спецификации (на тот период он имел название SPL) была не компания Adobe Systems. После разработки стандарта, в 1996 году, компания Macromedia купила FutureWave Software. В 2005 году Macromedia была приобретена Adobe Systems.

Чем можно открыть SWF-файл: перечень программ

Как открыть файл формата SWF

Важно. Практически для всех веб-браузеров требуется установка Adobe Flash Player. У Google Chrome инсталляция и обновление происходят автоматически.

Как открыть SWF-файл на компьютере

Совет. Если у вашего компьютера операционная система Mac OS, то следует выбрать аналогичную программу для просмотра SWF из списка пункта 2.

Как открыть файл SWF в онлайне – без сторонних программ

Как открыть SWF-файл на андроиде

Файлы на Андроид можно открыть только для просмотра, а для создания и редактирования требуются ресурсы компьютера. В Google Play Market есть отличное приложение для просмотра флеш-файлов под названием SWF Player. Приложение отличается минимальными требованиями памяти и удобством эксплуатации.

Онлайн-сервисы для конвертирования SWF-файлов

Не открываются swf файлы: видео

Часто приходится сталкиваться с ситуацией, когда файлы не открываются. Возможно, это связано с проигрывателем или браузером – тогда необходимо их переустановить. Если причина кроется не в этом, тогда предлагаю посмотреть видео о возможной другом факторе неисправности:

Программирование на ActionScript 3.0 — начало

Если Вы работаете с Flash и используете его пока что только для рисования и простой анимации, создание роликов или баннеров, но ни разу не занимались программированием в нём, то вероятно Вам очень хотелось узнать эту сторону flash-а.

Что такое ActionScript? Как можно писать код на flash-е? Как можно полноценно программировать во flash? Какие инструменты для этого лучше всего использовать? В данной статье приводятся ответы на подобные вопросы.

Эта статья послужит хорошим руководством новичка в программировании под flash на ActionScript 3.0 и поможет выбрать лучшие инструменты для этого.

Что такое ActionScript?

Action Script — это объектно-ориентированный язык программирования, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений.

С помощью Action Script можно создавать интерактивные мультимедиа-приложения, игры и веб-сайты.

Если Вы работаете с графической средой разработки Flash IDE (например Adobe Flash Professional CS5), но ни разу не интересовались где там можно писать программный код, то вероятно Вас уже волнует вопрос «Где же он прячется, этот AS3?».

AS3 во Flash IDE.

Создадим новый проект File — New — ActionScript 3.0 (рис. 1).

Появится пустая сцена с пустым кадром на одном слое. Теперь можно выделить кадр и нажать F9, тем самым открыть окно «Actions», в котором и находится область редактирования программного кода данного кадра.

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

Рис. 2. Код, написанный в редакторе Flash IDE.

Теперь можно запускать флешку (Ctrl+Enter). Данный код создаёт переменную s типа String (строка) и присваивает ей начальное значение — строку «its my AS3 code trace!«. Далее, функцией trace(), аргументом которой выступает ново созданная переменная, данная строка (а точнее уже значение переменной s) выводится во вкладку output, которая по умолчанию в интерфейсе IDE располагается рядом с вкладкой timeline.

Рис. 3. Отображение результата функции trace() в окне OUTPUT при запуске flash-ки.

Таким образом можно открывать и закрывать(на F9) редакторы кода для любого кадра флеш-приложения.

Вроде картина выходит не плохая — можно создавать разные объекты с анимациями (MovieClip), либо статичные картинки (Sprite) и у каждого объекта будут кадры и в каждом кадре можно запрограммировать всё что угодно. Выглядит удобно и гибко. Но это лишь на первый взгляд. Представьте что у Вас десятки объектов с десятками кадров и всем им нужно описать кодом различную или схожую логику поведения. Во втором случае (схожая логика) — это вообще означает сотни схожих строк кода, которые можно будет замучиться даже копировать из кадра в кадр. А представьте что в процессе разработки вам понадобится что-то изменить. Нет — это не дело! Не для этого хаоса был задуман язык AS3!

В добавок, если Вы поработаете редактором кода Flash IDE и, к примеру, работали в какой-нибудь другой среде программирования (Delphi, Visual Studio), то сразу заметите, что данный редактор, мягко говоря, удручает своей не удобностью и недоделанностью.

Что же делать, спросите Вы? Искать сторонние редакторы кода.

Альтернативные редакторы кода.

Самый лучший вариант для ОС Windows — это FlashDevelop (FD). Скачать свежую версию можно с сайта www.flashdevelop.org.

Для iOS хорошей альтернативой является FDT. Ознакомиться можно на оф. сайте fdt.powerflasher.com.

FlashDevelop.

Т.к. я на данный момент преимущественно обитаю в Windows, то расскажу о редакторе именно под эту ОС. В будущем, когда наберусь опыта в FDT, то напишу и о нём.

В установке нет ничего сложного, качайте свежую версию с оф. сайта и устанавливайте. Редактор совершенно бесплатный и для компиляции использует Flex SDK. Во время стандартной установки FD сам позаботится об установке последнего. Всё что надо установить для FD самому — это Java.

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

После установки можно создать новый проект (Project — New Project…), откроется диалог создания проекта, как показано на рис. 4.

Рис. 4. Диалог создания нового проекта во FlashDevelop.

Как можно заметить, FD позволяет создавать не только AS3 проекты. Но сейчас нас интересует именно AS3 проект, я предпочитаю выбирать заготовку для проекта с Preloader-ом, который и выбран на рис. 4. Далее введите имя проекта (поле Name) и назначьте директорию проекта (поле Location), если стоит галочка «Create directory for project», то в директории Location будет создана папка с именем проекта (Name) и в неё уже поместятся файлы проекта, если галочка не стоит, то файлы поместятся в указанную директорию Location.

После создания проекта справа Вы увидите структуру файлов и папок проекта, откройте папку src и откройте двойным щелчком файл Main.as. После чего Вы должны наблюдать код примерно такой же, как на рис. 5.

Рис. 5. Код класса Main нового проекта во FlashDevelop.

Попробуем написать какой-нибудь код, например примерно тот же, который пробовали в Flash IDE. Писать можно после комментированной строки «// entry point» т.к. это точка где сцена уже точно создана. напишем команду trace(), на рис. 5. я уже позволил себе это деяние :]

Теперь можно скомпилировать проект (F8) или сразу запускать для тестирования (F5), после запуска в окне Output вы увидите результат работы функции trace() — вывод строки.

Результаты команды trace() можно наблюдать только во время запуска приложения из под IDE, в которой компилируется и запускается код.
При запуске файла .swf в браузере или в обычном flash-плеере результат (а т.е. отображение окна output) не будет виден никому.

Теперь я уверен, что Вам уже не терпится сделать свой первый проект на AS3! А для этого нужно приступить к изучению самого языка.

Изучение языка AS3.

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

Хорошее дополнение к знаниям: Джои Лотт — «ActionScript 3.0. Сборник рецептов».

Читал в своё время ещё такую книгу: Рич Шуп — «Изучаем ActionScript 3.0. От простого к сложному». Написано хоть и не сильно много и подробно, но для новичков сойдёт, если под рукой нет Мука.

Этих книг весьма достаточно для бодрого старта! Читайте и практикуйтесь, практикуйтесь и читайте. Нет необходимости сесть и читать эти книги от корки до корки, т.к. в процессе чтения важно закреплять знания практикой, да и Вам самим будет приятно сделать что-нибудь как можно скорее :]

Илон Маск рекомендует:  Что такое девайс доступным языком!

Во время быстрого поиска документации в инете очень помогает оф. документация от Adobe.

Для дальнейшего развития, для хорошего осознания ООП и шаблонов проектирования (а это очень важно для хорошей ООП структуры) Вам будет незаменима следующая книга: Уильям Сандерс, Чандима Кумаранатунг — «ActionScript 3.0. Шаблоны проектирования».

На этом сайте вы так же найдёте не мало аспектов программирования на AS3, накопленных моим опытом.

К примеру, теперь вы можете узнать как использовать графику созданную в Flash IDE в своих флеш-проектах на FD, прочитав статью: Рисуем во Flash IDE, а кодим во FlashDevelop-е.

Или попробовать сделать свой первый прелоадер прочитав статью: Preloader своими руками.

Sothink SWF Decompiler

Вам необходимо открывать swf файл для редактирования? Тогда эта программа Вам поможет. Скачайте её, запустите. Выберите нужный swf файл и экспортируйте его в формат fla/flex или получите нужные Вам ресурсы из выбранного Вами файла swf.

Далее Вам остается только открыть полученный fla файл в программе Adobe Flash или ей подобной. Внесите необходимые изменения, нажмите Ctrl+Enter и Вы вновь получите swf файл, но уже измененный Вами.

Существуют ситуации, когда необходимо получить исходный код (source code) файла SWF и данная программа не справляется с этой задачей. Поэтому я рекомендую использовать сервис, предоставляемый сайтом http://www.showmycode.com/ для получения всего кода, содержащегося в SWF файле.

Данный сайт дает возможность получить исходный код таких форматов, как ZEND .php | Java .class | Adobe Flash .swf | .NET programs .exe, .dll | QR bar codes.

Для того, чтобы воспользоваться функцией получения кода Вам необходимо загрузить файл:

  1. Нажмите кнопку Choose (Выбрать). И выберите необходимый файл, код которого необходимо получить.
  2. Введите Букву или Цифру, которая указана на изображении (это проверка на человека).
  3. Нажмите кнопку Show My Code! (получить мой код).
  4. Если Вам необходимо поделиться кодом с кем-то, то поставьте галочку, для генерирования ссылки на Ваш код.

После чего пройдет обработка загруженного Вами файла определенными скриптами и Вы получите свой код.

Есть возможность скопировать его или сохранить, как файл.

SWF файлы. Чем открыть/редактировать? Обзор программ

SWF ( Small Web Format ) – проприетарный видео-формат используемый для флеш-анимации, векторной графики, аудио и видео контента в сети Интернет.

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

Содержание:

Сфера использования достаточно разнообразна – баннеры, веб-сайты, легковесные игры (например, в социальных сетях), презентации, мультфильмы.

Открываем SWF-файлы с помощью браузера

Для открытия SWF -файлов может быть использован практически любой браузер ( Google Chrome , Mozilla Firefox , Opera , Safari , пр.).

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

В некоторых случаях Flash -плеер необходимо будет установить дополнительно.

Для установки Flash -плеер в браузер необходимо зайти на веб-сайт Adobe . Скачать установщик, нажав кнопку «Загрузить» и после окончания закачки выполнить инсталляцию.

Для открытия SWF -файла достаточно его перетащить ( drag ’ n ’ drop ) в окно браузера. Если файл не открывается, возможно, необходимо обновить Flash -плеер вашего браузера.

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

Недостатком просмотра SWF -файлов в браузере является относительно низкая функциональность (возможность паузы, перемотки, остановки видеоряда), по сравнению с плеерами.

Полезная информация:

Для конвертации видео из одного формата в другой рекомендуем воспользоваться программой Format Factory. Она способна работать с аудио, картинками, документами и прочим.

Открываем SWF-файлы с помощью Flash-плеера

Существует достаточно большое количество платных и бесплатных Flash -плееров, которые можно найти в Интернет-сети. Функционал бесплатных плееров, по сути, не отличается от платных аналогов.

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

Данная функция реализована благодаря внушительной библиотеке кодеков встроенной в проигрыватель.

Gnash (слово образовано от GNU и Flash) — плеер и плагин, выпущенный под лицензией GPL, с целью замены проприетарных программ (Adobe Flash).

Цель разработчиков Gnash — максимально приблизить функционал проекта к проприетарному плееру от Adobe.

Работает в UNIX-среде.

Swfdec — свободный проигрыватель файлов распространяемый по GPL-лицензии.

Представлен в виде плагина для браузеров поддерживающих NSPlugin-интерфейс (Mozilla Firefox, Opera, Konqueror) и плеера. Работает в UNIX- и BSD-подобных операционных системах.

Редактирование SWF-файлов

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

С помощью бесплатного редактора SwiX можно внести изменения непосредственно в SWF-файл, без потери исходного качества (изменяется только отредактированный компонент), все что необходимо сделать это открыть файл, внести и сохранить изменения.

Интерфейс редактора довольно прост и состоит из панели инструментов, каталога ресурсов и xml-редактора.

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

Платный редактор Flash Decompiler Trillix с русскоязычным интерфейсом.

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

Редактор имеет функцию пакетного конвертирования файлов, позволяющая выбрать пакет файлов для конвертации, а вам заняться более полезными делами.

Одной из ключевых особенностей данного редактора является возможность просмотра изменений «на ходу», не нуждается в дополнительной установке Flash Studio и Adobe Flash.

Цена однопользовательской лицензии составляет 80 долларов.

Редактор SWF-файлов Sothink SWF Quicker является достаточно мощным приложением, позволяющим не только редактировать, но и создавать красочные, анимационные баннеры, флеш-игры, ролики и многое другое.

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

С помощью редактора может быть отредактирован любой элемент SWF-файла.

К особенностям программы следует отнести наличие редактора с подстветкой кода, применения Flash-фильтров для добавления специальных визуальных эффектов к объектам.

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

Цена лицензии составляет 85 долларов.

SWF — чем открыть файл

Чем открыть swf файлы? Поможет расширение браузера google, которое можно найти в магазине гугл хром

редактирование swf-байт-кода во время выполнения?

Я пытаюсь сделать модификацию для World of tanks.
Он использует сценарий Scaleform и Action 3.
Поскольку редактирование SWF-файла каждый раз очень длинное, я бы хотел найти способ загрузить код во время выполнения, а затем редактировать оригинальные скрипты, которые находятся внутри swf-файлов.
Как я могу это сделать?

Создан 29 июн. 14 2014-06-29 00:03:59 user2054758

Это похоже на исправление исполняемого файла. Возможно, вы получите ‘loaderinfo.bytes’ и загрузите еще один SWF из исправленного’ ByteArray’. Но, перекомпилируя, что SWF невозможно из кода AS3. – Vesper 30 июн. 14 2014-06-30 05:34:16

Возможно, вы можете попробовать этот подход. Учитывая описание lib, вы можете иметь AS3-файл, искать/заменять определенную строку, компилировать ее и запускать. Но если вы хотите настроить таргетинг на автономный SWF, вам необходимо сначала декомпилировать его. Также декомпиляция, а затем перекомпиляция SWF обычно не работает без лишних хлопот, так что, возможно, это все еще невозможно. – Vesper 03 июл. 14 2014-07-03 05:02:16

Какие модификации вы пытаетесь сделать? (кроме того, что вы пытаетесь взломать игру) – divillysausages 05 июл. 14 2014-07-05 11:25:31

это не хак, в мире танков существует тысяча модов, и они декомпилируют swf для извлечения гибкого проекта, затем отстраивают и меняют код ABC. Но так как это длинный путь, мне бы хотелось отредактировать swf на лету с помощью lib или, поскольку swf сначала загружается из папки res_mods, если он существует, создайте новый с почти таким же контентом – user2054758 12 июл. 14 2014-07-12 10:09:35

1 ответ

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

Однако, когда я читаю «. затем редактируйте оригинальные скрипты . » в своем вопросе, я задаюсь вопросом, есть ли у вас весь смысл: Вы редактируете свой код в текстовом формате. Вы компилируете свой текстовый код в двоичные данные, которые вообще не содержат какой-либо исходный текстовый исходный код. Точнее, ничто в конечном итоге не содержит значений данных (если это не сжато). Декомпиляция может потенциально преобразовать двоичный файл обратно в ActionScript или другие языки — НО для цены, имеющей смысл меньше функций и имен переменных, а также иногда и менее значимых алгоритмов (из-за оптимизации кода во время компиляции).

Создан 04 июл. 14 2014-07-04 13:04:52 Quicker

do_action() — создаёт хук (крючок), на месте которого в коде можно выполнить произвольную функцию

Принцип работы do_action() очень похож на принцип работы функции apply_filters() — всё начинается с кода, изменять который пользователю/разработчику сайта не стоит, и в этом коде есть место в котором потенциально будет нужно выполнить какой-то код. И в это место при помощи do_action() ставится хук, который позволяет это осуществить

Функция ничего не возвращает.

Пример использования do_action()

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

В это место кода вы вставляете функцию do_action()

Инструкции, ключевые слова и директивы

Классы x

Инструкции — это элементы языка, выполняющие или задающие действие во время выполнения кода. Например, инструкция return возвращает результирующее значение функции, в которой выполняется эта инструкция. Инструкция if вычисляет условие для определения того, какое действие должно быть выполнено далее. Инструкция switch создает разветвленную структуру для элементов ActionScript.

Ключевые слова атрибутов используются для изменения значения определений и могут применяться к определениям классов, переменных, функций и пространств имен. Ключевые слова определения используются для определения различных сущностей, например переменных, функций, классов и интерфейсов. Ключевые слова первичных выражений используются для представления литеральных значений. Список зарезервированных слов см. здесь: Изучение ActionScript 3.0.

Директивы включают инструкции и определения и могут действовать на этапе компиляции или на этапе выполнения. Директивы, которые не являются ни инструкциями, ни определениями, отмечены как директивы в следующей таблице.

ключевое слово первичного выражения
false Логическое значение, представляющее false.
null Специальное значение, которое может быть присвоено переменным или возвращено функцией в отсутствие данных для обработки.
this Ссылка на объект, содержащий метод.
true Логическое значение, представляющее true.
Пространства имен
AS3 Определяет методы и свойства базовых классов ActionScript, которые являются фиксированными свойствами, а не свойствами прототипа.
flash_proxy Определяет методы класса Proxy.
object_proxy Определяет методы класса ObjectProxy.
директива
default xml namespace Директива default xml namespace задает пространство имен по умолчанию для объектов XML.
import Делает внешне определенные классы и пакеты доступными для пользовательского кода.
include Включает содержимое заданного файла, как если бы команды в файле были частью вызывающего сценария.
use namespace Приводит к добавлению заданных пространств имен в набор открытых пространств имен.
инструкция
break Используется в цикле ( for , for..in , for each..in , do..while или while ) или в блоке инструкций, связанных с определенным случаем в инструкции switch .
case Определяет цель перехода для инструкции switch .
continue Пропускает все оставшиеся инструкции в наиболее глубоко вложенном цикле и приступает к выполнению следующей итерации цикла, как если бы управление передавалось к концу цикла обычным способом.
default Определяет условие по умолчанию для инструкции switch .
do..while Работает аналогично циклу while за исключением того, что инструкции выполняются однократно перед начальным вычислением условия.
else Задает инструкции, которые выполняются, если условие в инструкции if возвращает значение false .
for Вычисляет однократно выражение init (инициализация), затем запускает циклическую последовательность.
for..in Выполняет итерацию через динамические свойства объекта или элементы массива и выполняет инструкцию statement для каждого свойства или элемента.
for each..in Выполняет итерацию через элементы коллекции и выполняет инструкцию statement для каждого элемента.
if Вычисляет условие, по которому определяется следующая инструкция для выполнения.
label Связывает инструкцию с идентификатором, ссылка на который может указываться при помощи инструкции break или continue .
return Заставляет процесс выполнения незамедлительно вернуться к вызывающей функции.
super Вызывает суперклассовую или родительскую версию метода или конструктора.
switch Приводит к передаче управления одной из нескольких инструкций в зависимости от значения выражения.
throw Генерирует, или выбрасывает, ошибку, которая может быть обработана, или перехвачена, блоком кода catch .
try..catch..finally Обрамляет блок кода, в котором может произойти ошибка, затем реагирует на ошибку.
while Вычисляет условие и, если получено значение true , выполняет инструкцию или набор инструкций перед возвращением по циклу к повторному вычислению условия.
with Устанавливает объект по умолчанию, который используется при выполнении одной или нескольких инструкций, потенциально сокращая размер кода, который будет написан.
ключевое слово атрибута
dynamic Показывает, что экземпляры класса могут обладать динамическими свойствами, добавляемыми во время выполнения.
final Показывает, что метод невозможно переопределить или что класс невозможно расширить.
internal Показывает, что класс, переменная, константа или функция доступны любой вызывающей программе в пределах того же пакета.
native Показывает, что функция или метод реализуются проигрывателем Flash Player в собственном коде.
override Показывает, что метод заменяет наследуемый метод.
private Показывает, что переменная, константа, метод или пространство имен доступны только для класса, который определяет их.
protected Показывает, что переменная, константа, метод или пространство имен доступны только для класса, который определяет их, и для подклассов этого класса.
public Показывает, что класс, переменная, константа или метод доступны любой вызывающей программе.
static Показывает, что переменная, константа или метод принадлежит классу, а не экземплярам класса.
ключевое слово определения
. (rest) parameter Показывает, что функция принимает любое число разделенных запятыми аргументов.
class Определяет класс, который позволяет создавать экземпляры объектов, применяющие заданные общие методы и свойства.
const Задает константу, являющуюся переменной, значение которой можно присвоить только один раз.
extends Определяет класс, который является подклассом другого класса.
function Составляет набор инструкций, заданный пользователем для выполнения определенной задачи.
get Определяет получателя — метод, который может быть прочитан как свойство.
implements Указывает на то, что класс реализует один или несколько интерфейсов.
interface Определяет интерфейс.
namespace Позволяет управлять видимостью определений.
package Позволяет организовать код в дискретные группы, которые смогут импортировать другие сценарии.
set Определяет установщик — метод, отображаемый в общедоступном интерфейсе как свойство.
var Задает переменную.
. (rest) parameter ключевое слово определения

Применение

Показывает, что функция принимает любое число разделенных запятыми аргументов. Список аргументов становится массивом, доступным на протяжении всего тела функции. Имя массива указывается после символов . в объявлении параметра. Параметр может иметь любое имя, кроме зарезервированного слова.

При использовании с другими параметрами объявление параметра . (rest) должно быть последним. Массив параметра . (rest) заполняется, только если число аргументов, переданных функции, превышает число других параметров.

Каждый аргумент в списке разделенных запятой аргументов помещается в элемент массива. При передаче экземпляра класса Array весь массив помещается в один элемент массива параметра . (rest).

Использование данного параметра делает объект arguments недоступным. Хотя параметр . (rest) дает ту же функциональность, что и массив arguments и свойство arguments.length , он не обеспечивает возможностей свойства arguments.callee . Убедитесь, что использовать arguments.callee не требуется, перед тем, как использовать параметр . (rest).

Параметры

rest :* — Идентификатор, представляющий собой имя массива аргументов, переданного функции. Параметр не обязательно должен иметь имя rest; он может иметь любое имя, не являющееся ключевым словом. Можно задать для параметра «. » (rest) тип данных Array, но это может привести к путанице, так как параметр принимает список разделенных запятой значений, который не идентичен экземпляру класса Array.

Пример
Использование этого примера
В следующем примере параметр . (rest) используется в двух различных функциях. Первая функция traceParams просто вызывает функцию trace() для каждого аргумента в массиве rest. Вторая функция average() принимает список аргументов и возвращает среднее значение. Во второй функции для параметра используется другое имя — args.

Связанные элементы API

AS3 Пространства имен

Определяет методы и свойства базовых классов ActionScript, которые являются фиксированными свойствами, а не свойствами прототипа. При установке параметра компилятора «-as3» на значение true (что является установкой по умолчанию в Flex Builder 2)пространство имен AS3 автоматически открывается для всех базовых классов. Это значит, что экземпляр базового класса будет использовать фиксированные свойства и методы вместо версий этих свойств и методов, прикрепленных к объекту-прототипу этого класса. Использование фиксированных свойств обычно обеспечивает лучшую производительность, но в ущерб обратной совместимости со спецификацией языка ECMAScript редакции 3 (ECMA-262).

Связанные элементы API

break инструкция

Применение

Используется в цикле ( for , for..in , for each..in , do..while или while ) или в блоке инструкций, связанных с определенным случаем в инструкции switch . При использовании в цикле инструкция break предписывает Flash пропустить оставшуюся часть тела цикла, остановить процесс организации циклов и выполнить инструкцию, следующую за инструкцией цикла. При использовании в инструкции switch инструкция break предписывает Flash пропустить оставшиеся инструкции в блоке case и перейти к первой инструкции, следующей за закрывающей инструкцией switch .

Во вложенных циклах инструкция break только пропускает оставшуюся часть выполняемого цикла, не останавливая выполнение всей серии вложенных циклов. Для выхода из всей серии вложенных циклов используйте label или try..catch..finally .

Инструкция break может иметь дополнительную метку, которая должна совпадать с меткой внешней инструкции. Использование метки, не совпадающей с меткой внешней инструкции, является синтаксической ошибкой. Помеченные инструкции break можно использовать для выхода из нескольких уровней вложенных инструкций цикла, инструкций switch или инструкций block . Для примера см. описание инструкции label .

Параметры

label :* — Имя метки, связанной с инструкцией.

Пример
Использование этого примера
В следующем примере используется инструкция break для выхода из бесконечного цикла:

Связанные элементы API

case инструкция

Применение

Определяет цель перехода для инструкции switch . Если параметр jumpTarget приравнивается параметру expression инструкции switch при помощи оператора строгого равенства ( === ), проигрыватель Flash Player выполняет инструкции в параметре statements до появления инструкции break или до окончания инструкции switch .

При использовании инструкции case за пределами инструкции switch выдается ошибка, и сценарий не компилируется.

Параметры

jumpTarget :* — Любое выражение.
statements :* — Инструкции, выполняемые, если jumpTarget совпадает с условным выражением в инструкции switch.

Пример
Использование этого примера
Следующий пример определяет цели перехода для инструкции switch как thisMonth. Если thisMonth совпадает с выражением в инструкции case, инструкция выполняется.

Связанные элементы API

class ключевое слово определения

Применение

Определяет класс, который позволяет создавать экземпляры объектов, применяющие заданные общие методы и свойства. Например, при разработке системы отслеживания счетов можно создать класс Invoice, определяющий все методы и свойства, используемые каждым счетом. Затем при помощи команды new Invoice() можно создать объекты Invoice.

Каждый исходный файл ActionScript может содержать только один класс, видимый для других исходных файлов или сценариев. Внешне видимый класс может быть общедоступным или внутренним и должен быть определен внутри инструкции пакета. При включении других классов в тот же файл эти классы необходимо разместить вне инструкции пакета в конце файла.

Имя внешне видимого класса должно совпадать с именем исходного файла ActionScript, содержащего этот класс. Имя исходного файла должно состоять из имени класса с расширением файла .as. Например, если класс имеет имя Student, файлу, определяющему этот класс, необходимо присвоить имя Student.as.

Определения классов вкладывать нельзя, т.е. нельзя определить дополнительные классы в определении другого класса.

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

Для указания на то, что объекты могут добавлять динамические свойства и получать к ним доступ во время выполнения, вставьте перед инструкцией класса ключевое слово dynamic. Для объявления того, что класс реализует интерфейс, используйте ключевое слово implements . Для создания подклассов класса используйте ключевое слово extends . (Класс может расширить только один класс, но реализовывать несколько интерфейсов.) Можно использовать implements и extends в одной инструкции. Следующие примеры иллюстрируют типичное использование ключевых слов implements и extends :

Параметры

className :Class — Полное имя класса.

Пример
Использование этого примера
В следующем примере создается класс с именем Plant. Конструктор Plant имеет два параметра.

Связанные элементы API

const ключевое слово определения

Применение

Задает константу, являющуюся переменной, значение которой можно присвоить только один раз.

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

Параметры

identifier :* — Идентификатор константы.

Пример
Использование этого примера
Следующий пример показывает, что при попытке присвоить значение константе больше одного раза возникает ошибка.

Связанные элементы API

continue инструкция

Применение

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

Инструкция continue может иметь дополнительную метку, которая должна совпадать с меткой внешней инструкции. Использование метки, не совпадающей с меткой внешней инструкции, является синтаксической ошибкой. Помеченные инструкции continue можно использовать для выхода из нескольких уровней вложенных инструкций цикла.

Параметры
Пример
Использование этого примера
В следующем цикле while инструкция continue используется для пропуска оставшейся части тела цикла каждый раз, когда встречается число, кратное трем, и перехода в верхнюю часть цикла, где проверяется условие:

Связанные элементы API

default инструкция

Применение

Определяет условие по умолчанию для инструкции switch . Инструкции выполняются, если параметр expression инструкции switch не приравнивается (при помощи операции строгого равенства [ === ]) ни к одному из параметров expression , следующих за ключевыми словами case в данной инструкции switch .

Для инструкции switch не требуется инструкция условия default. Инструкция условия default не обязательно должна быть последней в списке. При использовании инструкции default за пределами инструкции switch выдается ошибка, и сценарий не компилируется.

Параметры

statements :* — Любые инструкции.

Пример
Использование этого примера
В следующем примере, если днем недели является Saturday или Sunday, ни одна из инструкций case не применяется, а выполняется переход к инструкции default.

Связанные элементы API

default xml namespace директива

Применение

default xml namespace = ns

Директива default xml namespace задает пространство имен по умолчанию для объектов XML.

Если директива default xml namespace не задана, то пространством имен по умолчанию является пространство имен без имени (в качестве URI будет задана пустая строка). Область видимости объявления default xml namespace находится в блоке функции, как и в случае с областью видимости переменной.

Параметры
Пример
Использование этого примера
В следующем примере показано, что областью видимости default xml namespace является блок функций:

Связанные элементы API

do..while инструкция

Применение

Работает аналогично циклу while за исключением того, что инструкции выполняются однократно перед начальным вычислением условия. Впоследствии инструкции выполняются, только если условие принимает значение true .

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

Если значение всегда возвращает значение true , цикл do..while является бесконечным. При создании бесконечного цикла возникают проблемы с проигрывателем Flash Player, которые ведут к появлению предупреждающего сообщения или сбою в работе проигрывателя. По возможности используйте цикл for , если известно количество раз выполнения цикла. Хотя циклы for удобны для чтения и отладки, они могут заменить циклы do..while не во всех ситуациях.

Параметры

condition :Boolean — Вычисляемое условие. Инструкции statement(s) в пределах блока кода do будут выполняться, пока параметр condition принимает значение true.

Пример
Использование этого примера
В следующем примере цикл do..while используется для вычисления того, принимает ли условие значение true, и для отслеживания переменной myVar, пока переменная myVar не примет значение 5 или больше. Когда переменная myVar принимает значение 5 или больше, цикл завершается.

Связанные элементы API

dynamic ключевое слово атрибута

Применение

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

Если класс запечатан (не является динамическим), то при попытке определить или задать свойства класса возникает ошибка. Если компилятор работает в строгом режиме и вы указали тип данных при создании экземпляров, то при попытках добавить свойства в запечатанные объекты возникнет ошибка компилятора; в противном случае — ошибка этапа выполнения.

Атрибут dynamic не наследуется подклассами. При расширении динамического класса подкласс становится динамическим, только если он объявлен с атрибутом dynamic .

Параметры
Пример
Использование этого примера
В следующем примере создаются два класса: один динамический с именем Expando и один запечатанный с именем Sealed, которые используются в последовательных примерах.

Связанные элементы API

else инструкция

Применение

Задает инструкции, которые выполняются, если условие в инструкции if возвращает значение false . Фигурные скобки ( <> ), в которых заключены инструкции для выполнения инструкцией else , не требуются при выполнении только одной инструкции.

Параметры

condition :Boolean — Выражение, принимающее значение true или false.

Пример
Использование этого примера
В следующем примере условие else используется для проверки того, принимает ли переменная age_txt значение больше или меньше 18:

Связанные элементы API

extends ключевое слово определения

Применение

Определяет класс, который является подклассом другого класса. Подкласс наследует все методы, свойства, функции и т. д., определенные для суперкласса. Классы с пометкой final не могут быть расширены.

Для расширения интерфейса можно также использовать ключевое слово extends. Интерфейс, расширяющий другой интерфейс, включает в себя все методы, объявленные для исходного интерфейса.

Параметры

className :Class — Имя определяемого класса.

Пример
Использование этого примера
В следующем примере класс Car расширяет класс Vehicle с наследованием всех методов, свойств и функций. Если сценарий создает экземпляр объекта Car, можно использовать методы обоих классов — класса Car и класса Vehicle. В следующем примере показано содержимое файла с именем Vehicle.as, который определяет класс Vehicle:

Связанные элементы API

false ключевое слово первичного выражения

Применение

Логическое значение, представляющее false. Логическим значением становится либо true , либо false , причем значения false и true являются противоположными.

Если в процессе автоматической типизации данных false преобразуется в число, то оно становится 0 ; при преобразовании false в строку, оно принимает вид «false» .

Примечание. Строка «false» преобразуется в логическое значение true .

Параметры
Пример
Использование этого примера
Следующий пример иллюстрирует преобразование значения false в число и в строку при автоматической типизации данных:

Связанные элементы API

final ключевое слово атрибута

Применение

Показывает, что метод невозможно переопределить или что класс невозможно расширить. При попытке переопределить метод или расширить класс, отмеченный как final , возникнет ошибка.

Параметры

methodName :Function — Имя метода, который невозможно переопределить.
className :Class — Имя класса, который невозможно расширить.

Связанные элементы API

flash_proxy Пространства имен

Определяет методы класса Proxy. Методы класса Proxy находятся в собственном пространстве имен во избежание конфликтов имен в случаях, когда подкласс Proxy содержит методы экземпляра с именами, которые совпадают с именами методов класса Proxy.

Связанные элементы API

for инструкция

Применение

Вычисляет однократно выражение init (инициализация), затем запускает циклическую последовательность. Циклическая последовательность начинается с вычисления выражения condition . Если выражение condition принимает значение true , выполняется инструкция statement и вычисляется next . Циклическая последовательность затем начинается снова с вычисления выражения condition .

Фигурные скобки ( <> ), в которых заключены инструкции для выполнения инструкцией for , не требуются при выполнении только одной инструкции.

Параметры

init — Дополнительное выражение для вычисления перед началом выполнения циклической последовательности; как правило, это выражение присваивания. Инструкция var также допустима для данного параметра.
condition — Дополнительное выражение для вычисления перед началом выполнения циклической последовательности; как правило, это выражение сравнения. Если выражение принимает значение true, инструкции, связанные с инструкцией for, выполняются.
next — Дополнительное выражение для вычисления после выполнения циклической последовательности; как правило, это выражение увеличения или уменьшения на единицу.

Пример
Использование этого примера
В следующем примере инструкция for используется для добавления элементов в массив:

Связанные элементы API

for..in инструкция

Применение

Выполняет итерацию через динамические свойства объекта или элементы массива и выполняет инструкцию statement для каждого свойства или элемента. Свойства объекта не хранятся в определенном порядке, поэтому могут отображаться в произвольной последовательности. Фиксированные свойства, например переменные и методы, определенные в классе, не перечисляются в инструкции for..in . Для получения списка фиксированных свойств используйте функцию describeType() , которая находится в пакете flash.utils.

Параметры

variableIterant :String — Имя переменной, выступающей в роли итеранта, ссылающейся на каждое свойство объекта или элемента массива.

Пример
Использование этого примера
В следующем примере цикл for..in используется с целью выполнения итерации для всех свойств объекта:

Связанные элементы API

for each..in инструкция

Применение

Выполняет итерацию через элементы коллекции и выполняет инструкцию statement для каждого элемента. Инструкцию for each..in , введенную в составе расширений языка E4X, можно использовать не только для объектов XML, но также для объектов и массивов. Инструкция цикла for each..in выполняет итерацию только через динамические, а не фиксированные, свойства объекта. Фиксированным является свойство, являющееся частью определения класса. Для использования инструкции for each..in с экземпляром класса, определенного пользователем, необходимо объявить класс с атрибутом dynamic .

В отличие от for..in , инструкция for each..in выполняет итерацию для значений свойств объекта, а не для имен свойств.

Параметры

variableIterant :* — Имя переменной, выступающей в роли итеранта, ссылающейся на элемент коллекции.
object :Object — Имя коллекции, через которую выполняется итерация. Коллекцией может быть объект XML, типовой объект или массив.

Пример
Использование этого примера
В следующем примере цикл for each..in используется с целью выполнения итерации для всех значений, содержащихся в свойствах объекта:

function ключевое слово определения

Применение

Составляет набор инструкций, заданный пользователем для выполнения определенной задачи. Можно определить функцию в одном местоположении и вызывать ее из различных сценариев в SWF-файле. При определении функции можно также задать для нее параметры. Параметры являются местозаполнителями для значений, которыми оперирует функция. При каждом вызове функции ей можно передавать различные параметры, т.е. использовать функцию в различных ситуациях.

Используйте инструкцию return в блоке statement(s) функции для того, чтобы функция сгенерировала, или возвратила, значение.

Применение 1. Ключевое слово function можно использовать для определения функции с заданным именем, параметрами и инструкциями. При вызове функции сценарием выполняются инструкции, заложенные в определении функции. Допускается опережающая ссылка; в рамках одного сценария функцию можно объявить после ее вызова. Последующее определение функции заменяет любое предыдущее определение этой функции. Этот синтаксис можно использовать там, где разрешается выполнение инструкции.

Применение 2. Инструкцию function можно также использовать для создания анонимной функции и возврата ссылки на нее. Этот синтаксис используется в выражениях и особенно полезен для установки методов объектов.

Для дополнительной функциональности в определении функции можно использовать объект arguments. Объект arguments обычно используется для создания функции, принимающей различное число параметров, и для создания рекурсивной анонимной функции.

Параметры

functionName :Function — Имя новой функции.
returnType :* — Тип данных возвращаемого значения.

Пример
Использование этого примера
Далее приводится пример определения функции sqr, которая возвращает число, возведенное в квадрат:

Связанные элементы API

get ключевое слово определения

Применение

Определяет получателя — метод, который может быть прочитан как свойство. Получатель — это специальная функция, которая возвращает значение свойства, объявленного при помощи ключевого слова var или const . В отличие от других методов, получатель вызывается без использования круглых скобок ( () ), что делает его похожим на переменную.

Получатели дают возможность применять принцип скрытия информации, позволяя создавать общедоступный интерфейс для частного свойства. Преимуществом скрытия информации является то, что общедоступный интерфейс не изменяется даже при изменении реализации частного свойства.

Еще одним преимуществом получателей является то, что они могут переопределяться в подклассах, а свойства, объявленные при помощи ключевых слов var или const , не могут.

Получатель может использоваться совместно с установщиком для создания свойства чтения-записи. Для создания свойства только для чтения создайте получатель без соответствующего установщика. Для создания свойства только для записи создайте установщик без соответствующего получателя.

Параметры

property :* — Идентификатор свойства, к которому обращается инструкция get; это значение должно быть тем же, что используется в соответствующей команде set.
returnType :* — Тип данных возвращаемого значения.

Пример
Использование этого примера
Далее приводится пример определения класса Team. Класс Team включает в себя методы получателя и установщика, которые позволяют считывать и задавать свойства в классе:

Связанные элементы API

if инструкция

Применение

Вычисляет условие, по которому определяется следующая инструкция для выполнения. Если условие принимает значение true , Flash Player выполняет следующие за условием инструкции в фигурных скобках ( <> ). Если условие принимает значение false , Flash Player пропускает инструкции в фигурных скобках и выполняет инструкции, следующие за фигурными скобками. Используйте инструкцию if в сочетании с инструкцией else для создания логики ветвления в сценариях.

Фигурные скобки ( <> ), в которых заключены инструкции для выполнения инструкцией if , не требуются при выполнении только одной инструкции.

Параметры

condition :Boolean — Выражение, принимающее значение true или false.

Связанные элементы API

implements ключевое слово определения

Применение

Указывает на то, что класс реализует один или несколько интерфейсов. Если класс реализует интерфейс, в нем должны быть определены все методы, объявленные в интерфейсе. Любой экземпляр класса, реализующий интерфейс, относится к типу данных, определенному интерфейсом. В результате оператор is возвращает true , когда экземпляр класса является первым операндом, а интерфейс — вторым; более того, действует преобразование в тип данных и из типа данных, определенного интерфейсом.

Связанные элементы API

import директива

Применение

Делает внешне определенные классы и пакеты доступными для пользовательского кода. Например, для использования в сценарии класса flash.display.Sprite необходимо его импортировать. Данное требование является отличием от предыдущих версий ActionScript, в которых директива import была необязательной.

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

Если необходимо получить доступ к нескольким классам в пакете, их все можно импортировать в одной инструкции, как показано в следующем примере:

Директива import импортирует только классы, функции и переменные верхнего уровня импортируемого пакета. Вложенные пакеты необходимо импортировать явным образом.

Если импортированный класс не использовать в сценарии, он не будет экспортирован как часть SWF-файла. Это значит, что можно импортировать большие пакеты, не заботясь о размере SWF-файла; байт-код, связанный с классом, включается в SWF-файл, только если этот класс действительно используется. Недостатком импортирования классов, которые не понадобятся, является повышение вероятности конфликта имен.

Параметры

packageName :* — Имя пакета, определенного пользователем в отдельном файле класса.
className :Class — Имя класса, определенного пользователем в отдельном файле класса.
include директива

Применение

Включает содержимое заданного файла, как если бы команды в файле были частью вызывающего сценария. Директива include вызывается во время компиляции. Следовательно, при внесении изменений в файл необходимо его сохранить и повторно скомпилировать SWF-файлы, в которых он используется.

interface ключевое слово определения

Применение

Определяет интерфейс. Интерфейсы — это типы данных, которые определяют набор методов; эти методы должны определяться любым классом, реализующим интерфейс.

Интерфейс подобен классу, но имеет следующие важные отличия:

  • Интерфейсы содержат только объявления методов, а не их реализацию. Другими словами, каждый класс, реализующий интерфейс, должен обеспечить реализацию каждого метода, объявленного в интерфейсе.
  • Определения методов интерфейса не могут иметь таких атрибутов, как public или private , но реализованные методы должны быть отмечены как public в определении класса, реализующего интерфейс.
  • Несколько интерфейсов могут быть унаследованы интерфейсом при помощи инструкции extends или классом посредством инструкции implements .

В отличие от ActionScript 2.0, ActionScript 3.0 позволяет использовать методы получателя и установщика в определениях интерфейса.

Связанные элементы API

internal ключевое слово атрибута

Применение

Показывает, что класс, переменная, константа или функция доступны для любой вызывающей программы в пределах того же пакета. Классы, свойства и методы принадлежат пространству имен internal по умолчанию.

Параметры

className :Class — Имя класса, который нужно задать как внутренний (internal).
varName :* — Имя переменной, которую нужно задать как внутреннюю (internal). Атрибут internal можно применять независимо от того, является переменная частью класса или нет.
kName :* — Имя константы, которую нужно задать как внутреннюю (internal). Атрибут internal можно применять независимо от того, является константа частью класса или нет.
functionName :Function — Имя функции или метода, которые нужно задать как внутренние (internal). Атрибут internal можно применять независимо от того, является функция частью класса или нет.
nsName :Namespace — Имя пространства имен, которое нужно задать как внутреннее (internal). Атрибут internal можно применять независимо от того, является пространство имен частью класса или нет.

Связанные элементы API

label инструкция

Применение

Связывает инструкцию с идентификатором, ссылка на который может указываться при помощи инструкции break или continue . Во вложенных циклах инструкция break или continue , которая не ссылается на метку, может пропустить только оставшуюся часть выполняемого на тот момент цикла, а не всю серию циклов. Однако если инструкция, которая определяет всю серию циклов, имеет связанную метку, то инструкция break или continue может пропустить всю серию циклов путем ссылки на эту метку.

Метки также позволяют выйти из блока инструкций. Нельзя вставить инструкцию break , которая не ссылается на метку, в блок инструкций, если этот блок инструкций не является частью цикла. Если блок инструкций имеет связанную метку, можно вставить инструкцию break , которая ссылается на эту метку в блоке инструкций.

Параметры

label :* — Действительный идентификатор, связываемый с инструкцией.
statements :* — Инструкция, связываемая с меткой.

Пример
Использование этого примера
Следующий пример иллюстрирует использование метки во вложенном цикле для выхода из всей серии циклов. В коде используется вложенный цикл для создания списка чисел от 0 до 99. Инструкция break появляется непосредственно перед тем, как счет достигнет 80. Если бы инструкция break не использовала метку outerLoop, код пропустил бы только оставшуюся часть непосредственно выполняемого цикла и продолжил бы выводить числа от 90 до 99. Однако за счет использования метки outerLoop инструкция break пропускает всю серию циклов, и последним выводится число 79.

Связанные элементы API

namespace ключевое слово определения

Применение

Позволяет управлять видимостью определений. Предопределенные пространства имен включают в себя public , private , protected и internal .

Далее приводится процедура создания, применения и ссылки на пространство имен:

  • Во-первых, определите пользовательское пространство имен при помощи ключевого слова namespace. Например, код namespace version1 создает пространство имен с именем version1 .
  • Во-вторых, примените это пространство имен к свойству или методу путем его использования в объявлении свойства или метода. Например, код version1 myProperty:String создает свойство с именем myProperty , которое принадлежит пространству имен version1
  • В-третьих, создайте ссылку на пространство имен при помощи ключевого слова use или путем использования пространства имен в качестве префикса идентификатора. Например, код use namespace version1; ссылается на пространство имен version1 для последующих строк кода, а код version1::myProperty ссылается на пространство имен version1 для свойства myProperty .

Параметры

name :Namespace — Имя пространства имен, которым может быть любой допустимый идентификатор.
uri :String — Унифицированный идентификатор ресурса (URI-адрес) пространства имен. Этот параметр не является обязательным.

Связанные элементы API

native ключевое слово атрибута

Применение

Показывает, что функция или метод реализуются проигрывателем Flash Player в собственном коде. Проигрыватель Flash Player использует ключевое слово native внутренне для объявления функций и методов в интерфейсе программирования приложений (API) ActionScript. Данное ключевое слово нельзя использовать в пользовательском коде.

null ключевое слово первичного выражения

Применение

Специальное значение, которое может быть присвоено переменным или возвращено функцией в отсутствие данных для обработки. Можно использовать null для представления значений, которые отсутствуют или которые не имеют определенного типа данных.

Значение null не следует путать со специальным значением undefined . Если значения null и undefined сравниваются с оператором равенства ( == ), они считаются равными. Однако когда значения null и undefined сравниваются с оператором строгого равенства ( === ), они не рассматриваются как равные.

Параметры
Пример
Использование этого примера
В следующем примере проверяются первые шесть значений проиндексированного массива и выводится сообщение, если значение не задано (если value == null):

Связанные элементы API

object_proxy Пространства имен

Определяет методы класса ObjectProxy. Методы класса ObjectProxy находятся в собственном пространстве имен во избежание конфликтов имен в случаях, когда подкласс Proxy содержит методы экземпляра с именами, которые совпадают с именами методов класса Proxy.

override ключевое слово атрибута

Применение

Показывает, что метод заменяет наследуемый метод. Для переопределения наследуемого метода необходимо использовать атрибут override и убедиться в том, что имя, атрибут свойства класса, число, тип параметров и тип возвращаемого значения полностью совпадают. Попытка переопределить метод без использования атрибута override считается ошибкой. Более того, ошибкой считается использование атрибута override , если для метода не существует соответствующего наследуемого метода.

Атрибут override нельзя использовать с:

  • Переменные
  • Константы
  • Статическими методами
  • Методами, которые не наследуются
  • Методами, реализующими метод интерфейса
  • Наследуемыми методами, отмеченными в суперклассе как final

Хотя невозможно переопределить свойство, объявленное при помощи var или const , схожей функциональности можно достигнуть, преобразовав свойство базового класса в получатель-установщик и переопределив методы, определенные при помощи get и set .

Параметры

name :Function — Имя переопределяемого метода.

Связанные элементы API

package ключевое слово определения

Применение

Позволяет организовать код в дискретные группы, которые смогут импортировать другие сценарии. Ключевое слово package необходимо использовать для указания на принадлежность класса пакету.

Параметры

packageName :* — Имя пакета.

Связанные элементы API

private ключевое слово атрибута

Применение

Показывает, что переменная, константа или метод доступны только для класса, который объявляет или определяет их. В отличие от ActionScript 2.0, в ActionScript 3.0 private больше не обеспечивает доступ к подклассам. Более того, private ограничивает доступ как во время компиляции, так и во время выполнения. По умолчанию переменная или функция доступны любой вызывающей программе в пределах того же пакета. Используйте это ключевое слово для ограничения доступа к переменной или функции.

Это ключевое слово можно использовать только в определениях класса, а не интерфейса. Ключевое слово private нельзя применить к классу или к другим определениям на уровне пакета.

Параметры

varName :* — Имя переменной, которую нужно задать как частную (private). Атрибут private можно применить, только если переменная находится внутри класса.
kName :* — Имя константы, которую нужно задать как частную (private). Атрибут private можно применить, только если константа находится внутри класса.
methodName :Function — Имя метода, который нужно задать как частный (private). Атрибут private можно применить, только если метод находится внутри класса.
nsName :Namespace — Имя пространства имен, которое нужно задать как частное (private). Атрибут private можно применить, только если пространство имен находится внутри класса.

Пример
Использование этого примера
Следующий пример иллюстрирует способ скрытия определенных свойств в классе при помощи ключевого слова private.

Связанные элементы API

protected ключевое слово атрибута

Применение

Показывает, что переменная, константа, метод или пространство имен доступны только для класса, который определяет их, и для подклассов этого класса. Определение ключевого слова protected в ActionScript 3.0 подобно определению ключевого слова private версии ActionScript 2.0 за исключением того, что protected ограничивает доступ как во время компиляции, так и во время выполнения. По умолчанию переменная или функция доступны любой вызывающей программе в пределах того же пакета. Используйте это ключевое слово для ограничения доступа к переменной или функции.

Это ключевое слово можно использовать только в определениях класса, а не интерфейса. Ключевое слово private нельзя применить к классу или к другим определениям на уровне пакета.

Определение ключевого слова protected в ActionScript 3.0 является более ограничительным, чем определение protected в языке программирования Java. В ActionScript 3.0 protected разрешает доступ строго к подклассам, тогда как в Java protected разрешает доступ также к любому классу в пределах того же пакета. Например, если класс с именем Base содержит свойство, отмеченное как protected , в ActionScript 3.0 только классы, расширяющие класс Base, имеют доступ к этому защищенному свойству. В Java любой класс, который находится в том же пакете, что и класс Base, имеет доступ к защищенному свойству, даже если этот класс не является подклассом класса Base.

Параметры

varName :* — Имя переменной, которую нужно задать как защищенную (protected). Атрибут protected можно применить, только если переменная находится внутри класса.
kName :* — Имя константы, которую нужно задать как защищенную (protected). Атрибут protected можно применить, только если константа находится внутри класса.
methodName :Function — Имя метода, который нужно задать как защищенный (protected). Атрибут protected можно применить, только если метод находится внутри класса.
nsName :Namespace — Имя пространства имен, которое нужно задать как защищенное (protected). Атрибут protected можно применить, только если пространство имен находится внутри класса.

Пример
Использование этого примера
Следующий код создает переменную в защищенном классе A и успешно получает доступ к этой переменной в классе B, так как класс B является подклассом класса A.

Связанные элементы API

public ключевое слово атрибута

Применение

Показывает, что класс, переменная, константа или метод доступны для любой вызывающей программы. Классы, переменные и методы являются внутренними (internal) по умолчанию, т.е. они видимы только в пределах текущего пакета. Чтобы сделать класс, переменную или метод видимыми для всех вызывающих программ, необходимо использовать атрибут public .

Параметры

className :Class — Имя класса, который нужно задать как общедоступный (public).
varName :* — Имя переменной, которую нужно задать как общедоступную (public). Атрибут public можно применять независимо от того, является переменная частью класса или нет.
kName :* — Имя константы, которую нужно задать как общедоступную (public). Атрибут public можно применять независимо от того, является константа частью класса или нет.
functionName :Function — Имя функции или метода, которые нужно задать как общедоступные (public). Атрибут public можно применять независимо от того, является функция частью класса или нет.
nsName :Namespace — Имя пространства имен, которое нужно задать как общедоступное (public). Атрибут public можно применять независимо от того, является пространство имен частью класса или нет.

Пример
Использование этого примера
Следующий пример иллюстрирует использование общедоступных переменных в файле класса:

Связанные элементы API

return инструкция

Применение

Заставляет процесс выполнения незамедлительно вернуться к вызывающей функции. Если за инструкцией return следует выражение, то выражение вычисляется, и возвращается результат.

Если определение функции содержит тип возвращаемого значения, за инструкцией return должно следовать выражение. Если тип возвращаемого значения не указан и инструкция return используется одна, возвращается значение undefined .

Возврат нескольких значений невозможен. При попытке сделать это будет возвращено только последнее значение. В следующем примере c возвращается:

Если необходим возврат нескольких значений, используйте вместо этого массив или объект.

Параметры

expression :* — Выражение, которое нужно вычислить и вернуть в качестве значения функции. Этот параметр является необязательным.

Пример
Использование этого примера
В следующем примере инструкция return используется в теле функции sum() для возврата суммы трех параметров. Следующая строка кода вызывает sum() и присваивает возвращенное значение переменной newValue.

Связанные элементы API

set ключевое слово определения

Применение

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

Установщики дают возможность применять принцип скрытия информации, позволяя создавать общедоступный интерфейс для частного свойства. Преимуществом скрытия информации является то, что общедоступный интерфейс не изменяется даже при изменении реализации частного свойства.

Еще одним преимуществом установщиков является то, что они могут переопределяться в подклассах, а свойства, объявленные при помощи ключевых слов var , не могут.

Возвращаемое установщиком значение может относиться к типу void или не указываться.

Установщик может использоваться совместно с получателем для создания свойства чтения-записи. Для создания свойства только для чтения создайте получатель без соответствующего установщика. Для создания свойства только для записи создайте установщик без соответствующего получателя.

Параметры

property :* — Идентификатор свойства, которое изменяется при помощи инструкции set; это значение должно быть тем же, что используется в соответствующей команде get.
newValue :* — Новое присваиваемое значение.

Пример
Использование этого примера
В следующем примере создается свойство чтения-записи с именем age путем определения получателя-установщика.

Связанные элементы API

static ключевое слово атрибута

Применение

Показывает, что переменная, константа или метод принадлежит классу, а не экземплярам класса.

Для доступа к статическому члену класса используйте имя класса вместо имени экземпляра. Например, класс Date имеет статический метод с именем parse() , который можно вызвать только при помощи следующего синтаксиса:

Метод parse() невозможно вызвать для экземпляра класса Date. Например, в следующем коде создается ошибка:

Можно использовать static только в определениях класса, а не интерфейса.

Статические члены класса не наследуются. Невозможно сослаться на статический член класса, используя имя подкласса, что возможно в Java или C++. Однако можно сослаться на статическую переменную или статический метод в пределах класса или подкласса без использования квалификатора. См. пример ниже.

Инструкцию super или ключевое слово this нельзя использовать внутри статического метода.

Параметры

varName :* — Имя переменной, которую нужно задать как статическую (static).
kName :* — Имя константы, которую нужно задать как статическую (static).
methodName :Function — Имя метода, который нужно задать как статический (static).

Пример
Использование этого примера
Следующий пример иллюстрирует использование ключевого слова static для создания счетчика, который отслеживает количество созданных экземпляров класса. Поскольку переменная numInstances является статической, она будет создана только один раз для всего класса, а не для отдельных экземпляров. Создайте новый файл ActionScript с именем Users.as и введите следующий код:

super инструкция

Применение

Вызывает суперклассовую или родительскую версию метода или конструктора. При использовании в теле конструктора класса инструкция super() вызывает суперклассовую версию конструктора. В вызове конструктора суперкласса должно быть правильное количество аргументов. Заметьте, что конструктор суперкласса вызывается всегда, независимо от того, осуществляется ли его вызов явным образом. Если он не вызывается явным образом, вызов без аргументов автоматически вставляется перед первой инструкцией в теле конструктора подкласса. Это значит, что если функция конструктора определена в подклассе, а конструктор суперкласса принимает один или несколько аргументов, необходимо вызвать конструктор суперкласса явным образом с правильным числом аргументов, иначе произойдет ошибка. Вызов конструктора суперкласса, однако, не обязательно должен быть первой инструкцией в конструкторе подкласса, как это должно быть в ActionScript 2.0.

При использовании в теле метода экземпляра super может использоваться с оператором «точка» (.) для вызова суперклассовой версии метода и дополнительно передавать аргументы (arg1 . argN) методу суперкласса. Это полезно для создания методов подкласса, которые не только обеспечивают дополнительное поведение методов суперкласса, но и вызывают методы суперкласса для реализации их исходного поведения.

Инструкцию super нельзя использовать в статическом методе.

Параметры

method :Function — Метод, который нужно вызвать в суперклассе.
argN :* — Дополнительные параметры, передаваемые суперклассовой версии метода или функции конструктора суперкласса.

Связанные элементы API

switch инструкция

Применение

Приводит к передаче управления одной из нескольких инструкций в зависимости от значения выражения. Все инструкции switch должны включать в себя блок по умолчанию, который будет выполняться, если ни одна из инструкций case не соответствует выражению. Каждая инструкция case должна заканчиваться инструкцией break , что предотвращает ошибку прохода при невыполнении условия. При такой ошибке выполняется код в следующей инструкции case , даже если этот блок не соответствует проверяемому выражению.

Параметры

expression :* — Любое выражение.

Пример
Использование этого примера
В следующем примере определяется инструкция switch, которая переходит к блоку по умолчанию:

Связанные элементы API

this ключевое слово первичного выражения

Применение

Ссылка на объект, содержащий метод. При выполнении сценария ключевое слово this ссылается на объект, содержащий сценарий. В теле метода ключевое слово this ссылается на экземпляр класса, который содержит вызываемый метод.

Параметры
Пример
Использование этого примера
Для вызова функции, определенной в динамическом классе, ключевое слово this используется для вызова этой функции в соответствующей области видимости:

throw инструкция

Применение

Генерирует, или выбрасывает, ошибку, которая может быть обработана, или перехвачена, блоком кода catch . Если исключение не перехвачено блоком catch , строковое представление возвращенного значения отправляется на панель «Вывод». Если исключение не перехвачено блоком catch или блоком finally , строковое представление возвращенного значения отправляется на панель «Вывод».

Как правило, возвращаются экземпляры класса Error или его подклассов (см. раздел «Примеры»).

Параметры

expression :* — Выражение или объект ActionScript.

Пример
Использование этого примера
В данном примере функция с именем checkEmail() проверяет, является ли переданная ей строка верно отформатированным адресом электронной почты. Если строка не содержит символ @, функция выдает ошибку.

Связанные элементы API

true ключевое слово первичного выражения

Применение

Логическое значение, представляющее true. Логическим значением становится либо true , либо false , причем значения true и false являются противоположными. Если в процессе автоматической типизации данных true преобразуется в число, то оно становится 1; при преобразовании true в строку, оно принимает вид «true» .

Параметры
Пример
Использование этого примера
Следующий пример иллюстрирует использование значения true в инструкции if:

Связанные элементы API

try..catch..finally инструкция

Применение

Обрамляет блок кода, в котором может произойти ошибка, затем реагирует на ошибку. Обработка исключений, реализованная с использованием инструкций try..catch..finally , является основным механизмом обработки ошибок времени выполнения в ActionScript 3.0. Когда возникает ошибка времени выполнения, Flash Player выдает исключение, то есть Flash Player прекращает нормальное выполнение кода и создает специальный объект типа Error . Затем проигрыватель Flash Player передает, или выбрасывает, объект ошибки первому доступному блоку catch . Если доступных блоков catch нет, исключение считается неперехваченным. Неперехваченные исключения прерывают выполнение сценария.

Инструкцию throw можно использовать для возврата исключений в коде явным образом. Рекомендуется возвращать объект, так как это обеспечивает гибкость и соответствует поведению проигрывателя Flash Player.

Для перехвата исключения, возвращенного проигрывателем Flash Player или пользовательским кодом, вставьте код, который может выдать исключение в блоке try. Если какой-либо код в блоке try выдаст исключение, управление передается блоку catch при его наличии, затем блоку finally , если такой существует. Блок finally всегда выполняется, независимо от того, было ли возвращено исключение. Если код в блоке try не выдает исключение (т.е. при нормальном выполнении блока try ), код в блоке catch игнорируется, но код в блоке finally все же выполняется. Блок finally выполняется, даже если блок try завершается инструкцией return .

За блоком try должен следовать блок catch , блок finally или и тот, и другой. Один блок try может содержать несколько блоков catch , но только один блок finally . Можно вложить столько уровней блока try , сколько нужно.

Параметр error , заданный в обработчике catch , должен быть простым идентификатором, например, e или theException или x . Параметр может быть типизированным. При использовании с несколькими блоками catch типизированные параметры позволяют перехватывать различные типы объектов ошибок, возвращенные одним блоком try .

Если возвращенное исключение является объектом, совпадение типов произойдет, если возвращенный объект является подклассом указанного типа. Если возвратилась ошибка конкретного типа, выполняется блок catch , обрабатывающий соответствующие ошибки. Если возвращено исключение не указанного типа, блок catch не выполняется, и исключение автоматически передается из блока try соответствующему обработчику catch .

Если ошибка произошла в функции, которая не содержит обработчик catch , Flash Player завершает выполнение этой функции, а также вызывающих функций, пока не будет найден блок catch. Во время этого процесса обработчики finally вызываются на всех уровнях.

Примечание. Если в блоке try имеется диспетчер событий, который вызывает обработчик событий, блок catch не перехватывает ошибку, если ее выдает обработчик событий. Любую ошибку, выданную после этого момента, можно перехватить, прослушивая LoaderInfo.uncaughtErrorEvents .

Параметры

error :* — Выражение, возвращенное инструкцией throw; как правило, это экземпляр класса Error или один из его подклассов.

Пример
Использование этого примера
Следующий пример иллюстрирует использование инструкции try..catch. Код в блоке try содержит недопустимую операцию. Спрайт не может добавить себя в качестве дочернего объекта. В результате проигрыватель Flash Player выдает исключение и передает объект типа ArgumentError соответствующему блоку catch.

Связанные элементы API

use namespace директива

Применение

Приводит к добавлению заданных пространств имен в набор открытых пространств имен. Заданные пространства имен удаляются из набора открытых пространств имен при выходе из текущего блока кода. Директива use namespace может быть на верхнем уровне программы, определения пакета или определения класса.

Параметры

nsN :Namespace — Одно или несколько пространств имен, добавляемых в набор открытых пространств имен.

Связанные элементы API

var ключевое слово определения

Применение

Задает переменную. При объявлении переменных в функции переменные становятся локальными. Они определяются для функции и прекращают действовать в конце вызова функции.

Невозможно объявить переменную, которая входит в область видимости другого объекта, как локальную.

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

Можно объявить несколько переменных в одной инструкции, разделяя объявления запятыми (хотя такой синтаксис может ухудшить ясность кода):

Параметры

variableName :* — Идентификатор.

Пример
Использование этого примера
Следующий сценарий ActionScript создает новый массив названий продуктов. Array.push добавляет элемент в конец массива.

Связанные элементы API

while инструкция

Применение

Вычисляет условие и, если получено значение true , выполняет инструкцию или набор инструкций перед возвращением по циклу к повторному вычислению условия. Если в результате вычисления условия получено значение false , инструкции не выполняются, и цикл завершается.

Инструкция while выполняет следующую серию действий. Каждое повторение шагов с 1 по 4 называется итерацией цикла. Условие проверяется в начале каждой итерации, как показано ниже:

  1. Выражение condition вычисляется.
  2. Если выражение condition принимает значение true или значение, которое может быть преобразовано в логическое значение true , например число, отличное от нуля, выполняется переход к шагу 3. В противном случае завершается инструкция while , и выполнение возобновляется со следующей инструкции после цикла while .
  3. Выполните блок инструкций statement(s) . При появлении инструкции continue пропустите оставшиеся инструкции и перейдите к шагу 1. При появлении инструкции break завершается инструкция while , и выполнение возобновляется со следующей инструкции после цикла while .
  4. Перейдите к шагу 1.

Зацикливание обычно используется для выполнения действия до тех пор, пока переменная counter меньше заданного значения. В конце каждого цикла счетчик увеличивается на единицу до тех пор, пока не будет получено заданное значение. При этом выражение condition не принимает значение true , и цикл завершается.

Фигурные скобки ( <> ), в которых заключены инструкции для выполнения инструкцией while , не требуются при выполнении только одной инструкции.

Параметры

condition :Boolean — Выражение, принимающее значение true или false.

Пример
Использование этого примера
В следующем примере инструкция while используется для проверки выражения. Когда значение i меньше 20, выполняется трассировка значенияi. Когда условие перестает принимать значение true, цикл завершается.

Связанные элементы API

with инструкция

Применение

Устанавливает объект по умолчанию, который используется при выполнении одной или нескольких инструкций, потенциально сокращая размер кода, который будет написан.

Параметр object становится контекстом, в котором считываются свойства, переменные и функции в параметре statement(s) . Например, если object является my_array , для которого заданы свойства length и concat , эти свойства автоматически считываются как my_array.length и my_array.concat . Или если object является state.california , любые действия или инструкции в инструкции with вызываются из экземпляра california .

ActionScript начинает поиск значения идентификатора в параметре statement(s) с начала цепочки областей видимости, заданной объектом object , и выполняет поиск идентификатора на каждом уровне этой цепочки в определенном порядке.

Цепочка областей видимости, используемая в инструкции with для разрешения идентификаторов, начинается с первого элемента следующего списка и заканчивается последним элементом:

  • Объект, заданный параметром object в наиболее глубоко вложенной инструкции with
  • Объект, заданный параметром object в самой ближней внешней инструкции with
  • Объект Activation (временный объект, создаваемый автоматически при вызове сценарием функции, содержащей локальные переменные, вызываемые функцией)
  • Объект, содержащий сценарий, который выполняется в данный момент
  • Объект Global (встроенные объекты, например Math и String)

Чтобы задать переменную в инструкции with , необходимо предварительно объявить переменную за пределами инструкции with или ввести полный путь к временной шкале, на которой будет находиться переменная. Если задать переменную в инструкции with без ее объявления, инструкция with будет выполнять поиск значения в соответствии с цепочкой областей видимости. Если переменная еще не существует, то временной шкале, из которой была вызвана инструкция with , будет задано новое значение.

Параметры

object :Object — Экземпляр объекта ActionScript или фрагмент ролика.

Пример
Использование этого примера
Следующий код задает свойства _x и _y экземпляра someOther_mc, затем предписывает someOther_mc перейти к Кадру 3 и остановиться. with (someOther_mc) < _x = 50; _y = 100; gotoAndStop(3); >Следующий фрагмент кода иллюстрирует написание предшествующего кода без использования инструкции with. someOther_mc._x = 50; someOther_mc._y = 100; someOther_mc.gotoAndStop(3); Инструкция with используется для доступа к нескольким элементам в списке цепочки областей видимости одновременно. В следующем примере встроенный объект Math помещается в начало цепочки областей видимости. Установка Math в качестве объекта по умолчанию разрешает идентификаторы cos, sin и PI в Math.cos, Math.sin и Math.PI соответственно. Идентификаторы a, x, y и r не являются методами или свойствами объекта Math, но поскольку они существуют в области активации объекта функции polar(), они разрешаются в соответствующие локальные переменные.

© 2015 Adobe Systems Incorporated. All rights reserved.
Tue Jun 12 2020, 11:52 AM Z

Илон Маск рекомендует:  Шаблон сайта Big-city HTML + CSS
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL