Как работает Flash?

Прямо сейчас я разрабатываю небольшой движок 2D-графики, ориентированный на холст, для игры и ищу в нескольких источниках подсказки, которые можно применить к дизайну моей системы. Но очевидно, что наиболее проверенным решением является флэш, поэтому мне было интересно, как устроена архитектура флэш-памяти. Я нашел несколько источников о работе Flash, но большинство из них очень простые и ориентированы на дизайнеров и художников, но я хотел бы узнать больше о внутренностях системы. Мой следующий шаг - загрузить исходный код Flex и изучить его, но перед этим я хотел бы иметь «руководство», чтобы максимально эффективно использовать время в кодовой базе. Есть предложения хороших онлайн-ресурсов и статей?

Спасибо!

Изменить: чтобы было понятнее, я ищу внутреннюю работу Flash, потому что моя цель - сделать что-то похожее на Flash, но, конечно, не такое мощное, которое работает в браузере без плагины. Увы чистый HTML + Javascript.

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


person Robert Gould    schedule 27.11.2008    source источник
comment
Это не прямой ответ на ваш вопрос, поэтому я сохраняю это как комментарий ... Знаете ли вы, ejohn.org/ blog / processingjs? Это порт обработки для JavaScript, близкий к вашей конечной цели ... Набор инструментов Dojo JS также позволяет рисовать JS в IE и браузерах, поддерживающих холст. К вашему сведению.   -  person PhiLho    schedule 27.11.2008
comment
Совсем не отвечает на мой вопрос, но это очень хороший проект, во многом похожий на то, что мне нужно, когда я его рассматриваю.   -  person Robert Gould    schedule 28.11.2008


Ответы (3)


Итак, в корне вашего Flash-контента находится объект сцены (экземпляр Stage). Эта стадия является корневым узлом дерева экранных объектов, любой из которых может содержать графические ресурсы (линии, текстовые поля и т. Д.) Или другие экранные объекты. Принцип «работы» Flash заключается в том, что проигрыватель Flash X раз в секунду рисует все дерево отображения на экране. Плеер также собирает данные, введенные пользователем (KeyboardEvents, и т. д.) из ОС и доставляет их на любой зарегистрированный для них объект.

Ваша задача как создателя контента - заполнить этот этап дочерними элементами (типа DisplayObject или любой подкласс), который Flash-движок будет рисовать на экране за вас. Вы можете заполнить его низкоуровневыми дочерними элементами, такими как Sprite, MovieClip и TextField, которые являются основными строительными блоками Flash-контента, или вы можете создать экземпляры таких вещей, как ScrollBar или DataGrid, которые представляют собой компоненты более высокого уровня с обычной сложной внутренней работой.

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

Это все, если вы имеете в виду AS3. Это поможет? В противном случае вам придется уточнить свой вопрос. ;)

person fenomas    schedule 27.11.2008
comment
Да, это помогает, но было бы еще лучше, если бы у вас было несколько хороших ссылок на ресурсы. - person Robert Gould; 27.11.2008
comment
Я должен был быть более конкретным, ваши ссылки на документы очень помогают, но мне было интересно, есть ли какие-то официальные документы или документ по этим строкам - person Robert Gould; 27.11.2008
comment
Я вижу, куда ты идешь. В целом все очень похоже на диаграмму FL, которую вы связали (но с меньшим количеством полей устройства XXX, и я думаю, что ОС устройства и буфер кадра будут частично заменены хуками плагина браузера). Но я не знаю каких-либо конкретных официальных документов или общедоступных спецификаций. - person fenomas; 27.11.2008

Если вы собираетесь делать игру, держитесь подальше от Flex. И, честно говоря, просмотр исходного кода скорее запутает вас, чем поможет. Flex очень хорош для приложений с интенсивным графическим интерфейсом и помогает ускорить разработку таких продуктов. Однако он не очень быстр и не особенно хорошо подходит для игр.

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

Flash Lite сильно отличается от своего взрослого старшего брата, так что не стоит слишком заботиться об этом.

Кроме того, ради всего святого, изучите ActionScript 3.0 и держитесь подальше от Actionscript 2. 3.0 намного лучше во всех возможных смыслах (по крайней мере, для нас, программистов).

РЕДАКТИРОВАТЬ: Чтобы уточнить: есть некоторая путаница в отношении термина Flash. Все это состоит из трех частей: плагина, который запускается в вашем браузере, «сама технология» и инструмент разработки. Все это просто называется Flash. Гибкость еще более запутанная. Это фреймворк, работающий поверх Flash. Во многом как, скажем, Swing для Java (я никогда не использовал это, поэтому такое сравнение может быть совершенно неверным). Все, что вы можете делать во Flex, также возможно во Flash. Flex является бесплатным открытым исходным кодом, а среда IDE, Flex Builder - нет. Flex Builder очень полезен, даже если вы делаете «чистые» проекты ActionScript. Но есть также много более дешевых альтернатив. Лично я предпочитаю FlashDevelop.

person grapefrukt    schedule 27.11.2008
comment
Гибкая среда, вероятно, неплохо подходит для создания игр as3, но да, гибкая библиотека - это не то, что вам нужно - person jcoder; 27.11.2008
comment
Да, я согласен, я только что прочитал часть кода Flex, но это было совсем не то, что я искал. Я ошибочно предположил, что код движка Flash включен в OpenSource SDK Flex, но это не так. - person Robert Gould; 27.11.2008
comment
Обратите внимание, что хотя Flash Player в целом не является открытым исходным кодом, Adobe недавно ввела в операционную систему сам движок AS3, который должен раскрывать основную архитектуру. Google mozilla tamarin для информации. - person fenomas; 01.12.2008

Лучшая ссылка, которую я нашел (хотя и довольно жалкая), такова:

Архитектура Flash Lite

person Robert Gould    schedule 27.11.2008