Ответ да , гибкий компилятор автоматически сжимает данные, используя один из входных алгоритмов (возможно, ZLIB), и прозрачно распаковывает их на другой стороне (флэш-плеер) непосредственно перед тем, как он дает вам доступ к несжатые данные.
Я встраивал ByteArray в SWF, и хотя внешние байты огромны (200 КБ), при внедрении в SWF он превращается в 30 КБ, что дает почти такие же результаты, что и сжатие вручную с использованием ByteArray.compress("zlib")
.
Затем я попытался вручную сжать растровые изображения PNG / JPEG, и это оказалось больше, чем просто встраивание его с использованием тега [Embed]
(172 КБ в виде сжатого ByteArray против 168 КБ в качестве встроенного изображения). Позволить компилятору Flex обрабатывать сжатие встроенных данных на самом деле лучше, чем пытаться делать свои собственные трюки на стороне ByteArray.
Редактировать: Чтобы ответить на ваш вопрос о встраивании PNG, сложно сказать, что происходит внутри flex-компилятора / флеш-плеера. Хотя Adobe известна правильной документацией, она также известна многими «недокументированными функциями». Ваш конкретный вопрос лучше всего отправить архитектору флеш-плеера (например, Tinic Uro ) или самому евангелисту (например, Lee Brimelow ), с некоторыми из которых вы можете легко связаться по Facebook (см. Это список ).