Программный код примера 19.3 не полон, поскольку его реализация сохранения данных на базе механизма Flash предполагает использование Flash_ролика с име_ нем PObject.swf. Этот ролик не более чем скомпилированный ActionScript_файл. ActionScript_код приводится в примере 19.4.
Пример 19.4. ActionScript'код для сохранения данных на базе механизма Flash
class PObject {
static function main() {
// Объект SharedObject существует в Flash 6, но он не защищен
// от атак типа межсайтовый скриптинг, поэтому нам нужен
// Flash_проигрыватель версии 7.
var version = getVersion();
version = parseInt(version.substring(version.lastIndexOf(" "))); if (isNaN(version) || version < 7) return;
// Создать объект SharedObject, который будет содержать хранимые
// данные. Имя объекта передается в строке URL_адреса ролика
// примерно так: PObject.swf?name=name
_root.so = SharedObject.getLocal(_root.name);
// Получить начальные данные и сохранить их в _root.data. _root.data = _root.so.data.data;
// Следить за переменной. При изменении _ сохранить ее новое значение. _root.watch("data", function(propName, oldValue, newValue) {
_root.so.data.data = newValue; _root.so.flush();
});
// Известить JavaScript_код, что хранимые данные получены. fscommand("init");
}
}
Программный ActionScript_код достаточно прост. Он начинается с создания объ_ екта SharedObject, используя при этом имя, заданное (из JavaScript_сценария)
19.6. Хранимые данные и безопасность
в виде строки запроса в URL_адресе объекта ролика. При создании объекта Sha_ redObject загружаются хранимые данные, которые в данном случае представлены
в виде единственной строки. Эта строка передается обратно JavaScript_сценарию с помощью функции fscommand(), которая вызывает определенный в сценарии об_ работчик doFSCommand. Кроме того, ActionScript_код устанавливает функцию_об_ работчик, которая будет вызываться при изменении свойства data корневого объ_ екта. Изменение значения свойства data из JavaScript_кода производится с помо_ щью функции SetVariable(), а этот ActionScript_обработчик вызывается в ответ и сохраняет данные.
ActionScript_код из файла PObject.as, который приводится в примере 19.4, необ_ ходимо скомпилировать в файл PObject.swf, прежде чем он сможет использо_ ваться с Flash_плеером. Сделать это можно с помощью свободно распространяе_ мого компилятора ActionScript с именем mtasc (доступен по адресу: http:// www.mtasc.org). Вызывается компилятор следующим образом:
Результатом работы компилятора mtasc является файл формата SWF, который будет вызывать метод PObject.main() из первого кадра ролика. Однако если вы пользуетесь интегрированной средой разработки Flash, то можете явно опреде_ лить вызов метода PObject.main() из первого кадра. Как вариант – можно просто скопировать код из метода main() и вставить его в первый кадр.