Advertisement
  1. Code
  2. ActionScript

Введение в ByteArray

Scroll to top
Read Time: 10 min

Russian (Pусский) translation by Yura Bobrov (you can also view the original English article)

ByteArray чрезвычайно мощный класс, который может использоваться для многих вещей, связанных с данными, включая (но не ограничиваясь) сохранение данных игры в режиме онлайн, шифрование данных, сжатие данных и преобразование объекта BitmapData в файл PNG или JPG. В этом введении мы будем использовать класс ByteArray для того, чтобы принять нативный объект AS3 и закодировать его в строку, которая может быть сохранена на сервере для последующего восстановления, а затем декодирована позже.

В предыдущих руководствах мы видели, как использовать XML и JSON для кодирования данных в текстовом формате (String). Однако как XML, так и JSON предназначены для чтения человеком, и в результате они гораздо больше, чем это необходимо. Также может быть сложно преобразовать некоторые виды AS3 объекта в любой формат. ByteArray имеет некоторые действительно передовые функций, но чтобы начать с чего-то, мы просто рассмотрим один простой пример: который позволяет очень легко превратить AS3 объект в строку.


Конечный результат предварительного просмотра

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

Когда вы вставить закодированную строку ByteArray в TextField и нажмите кнопку Load, она будет расшифрована и покажет свойства объекта, сохраненные в нем. Вы можете попробовать следующие закодированные ByteArrays; скопируйте и вставьте их в текстовое поле и нажмите на кнопку Load, чтобы увидеть о чем я говорю:


Шаг 1: Создание нового проекта ActionScript

Create New ActionScript ProjectCreate New ActionScript ProjectCreate New ActionScript Project

В окне «Flash Builder»:

  1. Откройте Flash Builder 4
  2. Нажмите на File Menu
  3. Наведите курсор на New
  4. Нажмите на проект ActionScript

Шаг 2: Настройка New ActonScript Project

ActionScript Project SetupActionScript Project SetupActionScript Project Setup

В окне «New Project ActionScript»:

  1. В поле Project name введите «TUTORIAL_ByteArray»
  2. Пожалуйста, запомните, где вы сохраняете проект
  3. Нажмите кнопку «Finish»

Шаг 3: Base64.as

Скопируйте Base64.as в каталог «com» вашего проекта.

Copy Base64.as file into 'com' directoryCopy Base64.as file into 'com' directoryCopy Base64.as file into 'com' directory
  1. Создайте новый каталог «com» внутри вашего каталога src.
  2. Скачайте файл Base64.as из источника загрузок.
  3. Поместите файл в созданную директорию «com».

Base64.as пригодится позже. Это по Steve Webster, который привык находиться в dynamicflash.com (он покинул Flash-сообществj пару лет назад).


Шаг 4: Необходимые классы

Import all Classes used in this projectImport all Classes used in this projectImport all Classes used in this project

В классе TUTORIAL_ByteArray (который является основным классом) пожалуйста импортируйте следующие классы для этого руководства:


Шаг 5: Привыкаем к Flash Builder I

Trace the 'Hello World' messageTrace the 'Hello World' messageTrace the 'Hello World' message

Добавьте следующий код в конструктор TUTORIAL_ByteArray для очень простой проверки.

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


Шаг 6: Привыкаем к Flash Builder II

Local variable only available inside the function it is createdLocal variable only available inside the function it is createdLocal variable only available inside the function it is created

Теперь давайте попробуем проследить сообщение внутри переменной _test, но на этот раз мы будем делать это с другой функцией:

Нажмите сочетание клавиш CTRL + S, чтобы сохранить проект. Ошибка обнаружена после того, как вы сохранили ваш проект; это потому, что переменная, которая объявлена внутри функции не будут доступна для любой другой функции. Так что в этом случае, мы должны объявить переменную _test снаружи:

Private variables are available to all function inside the same classPrivate variables are available to all function inside the same classPrivate variables are available to all function inside the same class

Шаг 7: Необходимые приватные переменные

Create all private variables for this projectCreate all private variables for this projectCreate all private variables for this project

Пожалуйста, добавьте следующие приватные переменные для этого проекта:


Шаг 8: UI

Давайте создадим простой пользовательский интерфейс для этого проекта.

a Simple user interfacea Simple user interfacea Simple user interface

Теперь, когда нам нужно отображать что-то в наш проект, мы должны объявить нашей сцене размеры (проверьте строку 13).

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

Нажмите клавишу F11, чтобы запустить этот проект и увидеть простой пользовательский интерфейс, который мы создали.


Шаг 9: Добавление интерактивности

Type into the field and click the load buttonType into the field and click the load buttonType into the field and click the load button

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

Нажмите клавишу F11, чтобы запустить этот проект; Попробуйте ввести что-то в _inputField, а затем нажмите _loadButton. Это самая базовая техника получения переменной от нашего пользователя и хранение ее в нашей приватной переменной.


Пища для размышлений

Мы, наконец, достигли наших наиболее важных шагов в рамках этого проекта, но прежде чем мы продолжим, позвольте мне обеспечить умственный стимулом для размышления. В настоящее время в нашем проекте, мы способны получить String и хранить ее в нашей приватной переменной. Но это только строка; как насчет если пользователь захочет ввести что-то внутри _inputFieldтак,  что я могу получить Object из него? Что следует пользователю напечатать? Ответ является «В кодировке Base64 ByteArray»


Шаг 10: Введение в ByteArray

Output from our ByteArrayOutput from our ByteArrayOutput from our ByteArray

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

Нажмите клавишу F11, чтобы запустить этот проект. Смотрите, как это просто, ByteArray представляет собой чрезвычайно мощный класс и все это все еще не так сложно. Мы взяли нативный объект AS3 и превратили его в Action Message Format.

Перед отправкой данных в PHP-скрипт, с помощью метода GET, мы должны преобразовать его в строку Base64. Это потому, что Base64 может передаваться через XML (и HTML).


Шаг 11: Кодирование ByteArray в строку Base64

a Base64 String representation of our Byte dataa Base64 String representation of our Byte dataa Base64 String representation of our Byte data

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

Нажмите клавишу F11, чтобы запустить этот проект. Преобразование объекта в ByteArray простое, преобразование Byte значения наших данных в строку Base64 является также простым, все благодаря Base64.as.


Шаг 12: Преобразование кодированной строки Base64 в объект

Converting a Base64 String into Object and displaying its properties and valuesConverting a Base64 String into Object and displaying its properties and valuesConverting a Base64 String into Object and displaying its properties and values

Мы будем стараться декодировать введенные строки Base64 в объект всякий раз, когда пользователь кликает _loadButton, измените нашу функцию _loadButton_CLICK. Пожалуйста, прочитайте закомментированные объяснение внутри кода:

Нажмите клавишу F11, чтобы запустить этот проект. Мы получаем нашу закодированную строку Base64 из нашего _testObject внутри нашего _inputField; Нажмите кнопку _loadButton, чтобы увидеть как наш проект преобразует эту строку Base64 обратно и отображает все свойства и значения. Вы можете попробовать скопировать и вставить строки Base64 в начале этого руководства и читать все мои сообщения.


Заключение

Класс ByteArray чрезвычайно мощный, и все же он очень простой в использовании. Я видел много отличных Flash-приложений и там используют ByteArray для выполнения столь многих выносящих мозг манипуляций данными, например таких, которые я упомянул в начале этого руководства. Я слышал, многие программисты Flash игр используют XML для сохранения данных своих посетителей «сохранить данные игры», но как мы все уже знаем, XML чертовски сложный класс; с ByteArray, я могу сохранить что-то вроде этого ЛЕГКО.

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

Я надеюсь, что вы нашли это руководство полезным. Спасибо за чтение!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.