My First ActionScript 3 Application » Знакомство с основами AMF
Главная > AMF, Основы > Знакомство с основами AMF

Знакомство с основами AMF

Тед Патрик знакомит с основами формата AMF. Формат AMF - это бинарный формат, представляющий собой сериализованный ActionScript объект. Этот тип данных широко используется Flash-плеером и AIR как для хранения данных, так и для обмена ими. Во Flash Player 9 и AIR для работы с AMF в первую очередь используется класс flash.utils.ByteArray. Например:


//Создадим AMF используя ByteArray


import flash.utils.ByteArray;

//Создание байтовой последовательности
var bytes:ByteArray = new ByteArray();

//Запись объекта в виде байтовой последовательности
bytes.writeObject({myString:"Hello World", myNumber:21, myBool:true});

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


//Создаем объект и десериализуем из байтовой последовательности
var myObject:Object = bytes.readObject();

//Проверяем результат
trace( myObject.myString ) // Hello World

Во Flash Player-е AMF используется в таких классах, как SharedObject, RemoteObject, LocalConnection, ByteArray, RTMP (во всех вариантах) и во всех удаленных RPC-операциях. Выгодность использования AMF на данный момент сильно недооценена, несмотря на то что имеет ряд преимуществ:

  • Размер файла - Объекты AMF имеют очень маленький объем за счет того что сжаты с использованием zlib.
  • Быстрая Сериализация/Десериализация - Скорость кодирования/раскодирования в AMF очень высока даже при малом количестве памяти и медленном процессоре.
  • Поддержка как стандартных типов данных, так и кастомных классов - Вы можете сериализировать любой объект (кроме displayObjects, конечно).

И еще... Тед обещает нам большую новость об AMF в декабре... будем ждать.

  1. zz
    12 декабря 2007 в 20:23 | #1

    >Размер файла — Объекты AMF имеют очень маленький объем за счет того что сжаты с использованием.

    zlib допиши :))

  2. 12 декабря 2007 в 22:47 | #2

    >Размер файла — Объекты AMF имеют очень маленький объем за счет того что сжаты с использованием.
    zlib допиши :))

    О, точно… спасибо

  3. 22 февраля 2008 в 00:02 | #3

    Полностью согласен
    😉

  4. 2 октября 2010 в 17:28 | #4

    т.е. я так понял что swf не подходит? Через сокет, например, его не передать c помощью AMF?

  5. flash_masta
    30 октября 2010 в 00:57 | #5

    Чо вы сума сошли? AMF никогда не поддерживал ZLIB при сериализации. Буэээ. Хоть бы спеки почитали.

  6. 30 октября 2010 в 09:29 | #6

    @flash_masta

    имеется в виду объект ByteArray, конечно же. (ссылка)

  7. flash_masta
    30 октября 2010 в 13:57 | #7

    @admin
    Я про Кузьму, вы про Ерему. В ByteArray, да, есть компрессия deflate/zlib. С этим никто не спорит. Однако, ни RemoteObject, ни SharedObject, ни LocalConnection, ни для уменьшения AMF внутри RTMP ZLIB никогда не использовался.

  1. 30 ноября 2007 в 13:39 | #1