Java



Flash. SharedObject.


Там, где нет DOM Storage, для offline-хранения используют flash-интерфейс SharedObject. Он позволяет хранить самые разные объекты средствами Adobe Flash.

Пример ActionScript для работы с SharedObject:

// создать/получить namespace storage

storage = SharedObject.getLocal("storage"); // записать данные name => Вася

storage.data.name="Вася";   // сохранить объект

storage.flush()

  // перечислить свойства объекта

for (var name in storage.data) {

trace(name + ":" + storage.data[name])

}

Чтобы работать с этим хранилищем из javascript, нужен способ коммуникации JS <->Flash.

В старых версиях Flash вызвать javascript можно через getURL('javascript:...').

Передать значение во Flash можно установкой переменной flash-объекту. Эту переменную flash-ролик может считывать каждый кадр и предпринимать соответствующие действия.

Во Flash 8+ появился интерфейс ExternalInterface, который позволяет как указывать AS-функцию для приема данных из JS, так и напрямую вызывать JS-метод.

Открыть рабочий пример передачи значения Flash <-> JS.

Код примера в ActionScript:

import flash.external.*;   // установить местную функцию recieveFromJS для приема данных

// от javascript-функции sendFromJS

ExternalInterface.addCallback("sendFromJS", null, recieveFromJS);   // Эта функция будет реагировать на sendFromJS

function recieveFromJS(text) {

_root.theText.text = text; // .. и устанавливать текст в окошке

}

  // Это действие, наоборот, отправляет данные в JS.

_root.button.onRelease = function() {

// вызвать javascript-функцию recieveFromFlash

ExternalInterface.call("recieveFromFlash", _root.theText.text); _root.theText.text = "";

}

Код примера в JS:

function recieveFromFlash(Txt) {

document.getElementById('text').value = Txt; }

  function sendFromJS() {

var value = document.getElementById('text').value

  var movie = (navigator.appName.indexOf("Microsoft")!=-1 ? window : document)["BridgeMovie"]  

movie.sendFromJS(value);   document.getElementById('text').value = ''

}

Скачать исходники

Документация на ExternalInterface




Содержание  Назад  Вперед