Сохранение изображения (снимка мувиклипа) в ActionScript 2.0

Задача: сохранить картинку (например, снимок мувиклипа) из флеш-ролика на компьютер пользователя средствами ActionScript 2.0.

Да, проблема... Но если вам требуется только возможность последующей загрузки данного изображения в флеш-ролик, то тогда проблемы нет. Будем использовать SharedObject и BitmapData.

Код ActionScript 2.0:

/* импортируем класс BitmapData */ import flash.display.BitmapData; /* создаём локальный общий объект для хранения данных */ var so:SharedObject = SharedObject.getLocal("myimage", "/"); /* функция для сохранения картинки в качестве параметра указываем мувиклип, изображение которого надо сохранить */ function save_image(mov, num) { var bitmapData:BitmapData = new BitmapData(mov._width, mov._height); bitmapData.draw(mov); var arr:Array = new Array(); for (i=0; i<=mov._width; i++) { for (j=0; j<=mov._height; j++) { arr.push(bitmapData.getPixel(i, j)); } } so.data.arr = arr; so.data.w = mov._width; so.data.h = mov._height; } /* функция для загрузки картинки */ function load_image(num) { if (so.data.arr != undefined && so.data.w != undefined && so.data.h != undefined) { var arr:Array = so.data.arr; var w = so.data.w; var h = so.data.h; var count = 0; var bitmapData:BitmapData = new BitmapData(w, h); for (i=0; i<=w; i++) { for (j=0; j<=h; j++) { bitmapData.setPixel(i, j, arr[count]); count++; } } this.createEmptyMovieClip("cont", this.getNextHighestDepth()); cont.attachBitmap(bitmapData, cont.getNextHighestDepth()); cont._x = 300; cont._y = 50; } else { trace("Данные повреждены!"); } }

Всё! Теперь у вас есть две функции. Первая сохраняет изображение в локальное хранилище, а вторая загружает его. Работу данного скрипта демонстрирует следующее флеш-приложение:

Загрузить Adobe Flash Player

Проверить его работу просто. Кликаем по большому серому мувику и на нём появляется случайное число. Потом жмём «save». Теперь снимок с мувика со случайным числом помещён в память. Можем нажать «load» и убедиться, что картинка действительно сохранилась. Хорошо, но нам надо, чтобы изображение хранилось и между сеансами работы с флеш-приложением. Именно так дело и обстоит. Перезагружаем страницу с флеш-роликом и, не кликая по кнопке «save», нажимаем кнопку «load». Загрузилось изображение из предшествующего сеанса работы флеш-приложения (обратите внимание на рандомное число на картинке - я его не случайно добавил в мувик).

Да, у этого способа много недостатков, но он работает. А это лучшее его достоинство. И, если есть желание, то этот скрипт можно совершенствовать и оптимизировать.

ВАЖНО! Чтобы приведённое выше решение работало, требуется выделить в локальном хранилище (LSO) достаточный объём памяти. В этом вам неоценимую помощь может оказать метод showSettings().

Исходник приведённого здесь флеш-приложения прилагается (под Macromedia Flash 8).

Автор: admin

Дата добавления: 2011-09-08

Просмотров: 3426

Рейтинг поста: +12-

Правила перепечатки

Социальные закладки:
Комментарии:
К данной заметке комментариев пока нет. Ваш комментарий может стать первым.
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика