Привет. :)
Чтобы сохранить какие-нибудь данные из ActionScript можно использовать Shared Object.
Вот, например:
( Покликайте и обновите страницу )
Что это?
SharedObject - это фича, которая позволяет брать/сохранять данные из .swf файла.
Зачем это?
Чтобы сохранить данные, например, рекорды, текущий прогресс игры и т.д.
Какой объем данных я могу сохранить?
По умолчанию стоит ограничение 100кб, но можно увеличить до бесконечности, если пользователь согласится.
Как это работает?
SharedObject работает аналогично cookie в браузерах. На компьютере пользователя создается .sol файл с данными.
В Windows эти файлы можно найти в директории:
C:\Users\<Имя пользователя>\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\<Случайный набор букв>\<Название домена>\<Путь до .swf файла>\<Имя локального общего объекта>.sol
Код примера выше:
Main.as:
Попробуем чуть-чуть разобраться.
Также есть метод clear - удаляет .sol файл, и свойство size - текущий размер .sol файла в байтах.
Доступ к общему объекту может получить не только тот .swf файл, который его создал.
Чтобы избежать конфликта имен, Adobe помещает .sol файлы в отдельной директории - пути до .swf файла.
Это выглядит так:
...< Название домена >\<Путь до .swf файла >\<"Название .swf файла".swf><Имя SharedObject>.sol
Выделенный путь задается по умолчанию. Путь можно изменить, указав его вторым параметром в методе getLocal.
Например, в одном .swf файле я создам общий локальный объект:
Тогда путь будет такой:
...< Название домена >\Counter.sol
А в другом .swf файле я напишу:
И если эти .swf файлы находятся на одном домене, например, localhost ( т.е. я запускаю их локально ), то Counter.sol удалится.
Нанана, вот исходник.
Чтобы сохранить какие-нибудь данные из ActionScript можно использовать Shared Object.
Вот, например:
( Покликайте и обновите страницу )
Что это?
SharedObject - это фича, которая позволяет брать/сохранять данные из .swf файла.
Зачем это?
Чтобы сохранить данные, например, рекорды, текущий прогресс игры и т.д.
Какой объем данных я могу сохранить?
По умолчанию стоит ограничение 100кб, но можно увеличить до бесконечности, если пользователь согласится.
Как это работает?
SharedObject работает аналогично cookie в браузерах. На компьютере пользователя создается .sol файл с данными.
В Windows эти файлы можно найти в директории:
C:\Users\<Имя пользователя>\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\<Случайный набор букв>\<Название домена>\<Путь до .swf файла>\<Имя локального общего объекта>.sol
Код примера выше:
Main.as:
package { import flash.net.SharedObject; import flash.display.MovieClip; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFormatAlign; import flash.events.MouseEvent; import flash.events.KeyboardEvent; import flash.ui.Keyboard; public class Main extends MovieClip { private const TEXT_FIELD_X : Number = 0.0, TEXT_FIELD_Y : Number = 72.35, TEXT_FIELD_WIDTH : Number = 300.0, TEXT_FIELD_HEIGHT : Number = 155.25, FONT_NAME : String = "Jokerman", FONT_SIZE : int = 100, FONT_COLOR : uint = 0xFF0000; private var sharedObject : SharedObject, counterTextField : TextField; public function Main () : void { this.init(); } private function init () : void { this.createTextField(); this.getSharedObject(); this.updateTextField(); stage.addEventListener( MouseEvent.CLICK, mouseClicked ); stage.addEventListener( KeyboardEvent.KEY_DOWN, KeyDown ); } private function mouseClicked ( e : MouseEvent ) : void { this.increaseCount(); this.updateTextField(); } private function KeyDown ( e : KeyboardEvent ) : void { if ( e.keyCode == Keyboard.SPACE ) { this.resetCounter(); this.updateTextField(); } } private function resetCounter () : void { this.sharedObject.data.count = 0; this.sharedObject.flush(); } private function getSharedObject () : void { this.sharedObject = SharedObject.getLocal( "Counter" ); // If data.count is not specified // Set it to 0 if ( this.sharedObject.data.count == undefined ) { this.sharedObject.data.count = 0; this.sharedObject.flush(); } } private function createTextField () { this.counterTextField = new TextField(); this.counterTextField.selectable = false; this.counterTextField.x = TEXT_FIELD_X; this.counterTextField.y = TEXT_FIELD_Y; this.counterTextField.width = TEXT_FIELD_WIDTH; this.counterTextField.height = TEXT_FIELD_HEIGHT; var textFormat : TextFormat = new TextFormat(); textFormat.font = FONT_NAME; textFormat.size = FONT_SIZE; textFormat.color = FONT_COLOR; textFormat.align = TextFormatAlign.CENTER; this.counterTextField.defaultTextFormat = textFormat; stage.addChild( this.counterTextField ); } private function updateTextField () : void { this.counterTextField.text = String( this.sharedObject.data.count ); } private function increaseCount () : void { this.sharedObject.data.count ++; this.sharedObject.flush(); } } }
Попробуем чуть-чуть разобраться.
this.sharedObject = SharedObject.getLocal( "Counter" );Берем данные из файла Counter.sol.
if ( this.sharedObject.data.count == undefined ) { this.sharedObject.data.count = 0; }Если файл еще не создался или он был очищен, тогда в data ничего не будет. Если это так - ставим data.count в 0.
this.sharedObject.flush();Сохраняем данные.
Также есть метод clear - удаляет .sol файл, и свойство size - текущий размер .sol файла в байтах.
Доступ к общему объекту может получить не только тот .swf файл, который его создал.
Чтобы избежать конфликта имен, Adobe помещает .sol файлы в отдельной директории - пути до .swf файла.
Это выглядит так:
...< Название домена >\<Путь до .swf файла >\<"Название .swf файла".swf><Имя SharedObject>.sol
Выделенный путь задается по умолчанию. Путь можно изменить, указав его вторым параметром в методе getLocal.
Например, в одном .swf файле я создам общий локальный объект:
var sharedObject : SharedObject = SharedObject.getLocal( "Counter", "/" ); sharedObject.data.foo = "some value";
Тогда путь будет такой:
...< Название домена >\Counter.sol
А в другом .swf файле я напишу:
var sharedObject : SharedObject = SharedObject.getLocal( "Counter", "/" ); sharedObject.clear();
И если эти .swf файлы находятся на одном домене, например, localhost ( т.е. я запускаю их локально ), то Counter.sol удалится.
Нанана, вот исходник.
Комментариев нет:
Отправить комментарий