PDA

Просмотр полной версии : Shared Object - создаёт файлы с левыми именами


Livia
09.11.2007, 23:47
Если я правильно поняла, Shared Object должен создавать на машине пользователя файл с именем,прописанным в методе .getLocal('Имя файла') в папке .../localhost.

Мои мувики запускаются локально (не из Интернета), но создают в этой папке другие папки с именем типа ##854A56418DBED31B, а в ней - единственный файл с именем 00000001.sol (во всех папках файл только один и только с таким именем). Это приводит к тому, что не только другие мувики не видят Shared Object, но и даже разные версии одного мувика не видят Shared Object, созданный другой версией, хотя запускаются из одной и той же папки.

В чём дело? (Внутри файлов 00000001.sol были обнаружены все нужные переменные, а в конце файла строчка типа CORRECT.swf/VT3.sol - т.е. указано, какой файл .swf сохранил тут свои данные, и какой файл .sol он должен был на самом деле создать).

screamge
10.11.2007, 00:41
Вы случайно не используете русские буквы в названии файла или названии папки?

Livia
10.11.2007, 02:12
Нет, никаких русских букв, запись вида

_global.saveInFile = SharedObject.getLocal('VT1');

screamge
10.11.2007, 02:23
А в пути который до файла тоже нет русских символов?


_global.saveInFile = SharedObject.getLocal('VT1');
saveInFile.data.lang = 'rus';
saveInFile.flush ();


Такого рода запись у меня не вызывает описаного эффекта.

iNils
10.11.2007, 04:05
что не только другие мувики не видят Shared Object, но и даже разные версии одного мувика не видят Shared Object, созданный другой версиейПотому, что пишите
SharedObject.getLocal('VT1');
вместо
SharedObject.getLocal('VT1', 'путь');В первом случаи, если не указан второй параметр, файл VT1.sol создается в папке по пути и имени swf, то есть каждый новая версия swf с другим именем, будет работать с собственной версией VT1.sol. А во втором в папке путь/VT1.sol, что позволяет разным версиям использовать один и тот ж файл.

Livia
10.11.2007, 12:36
to screamge
Спасибо за совет, но русских букв нет нигде.

to iNils
Я написала
_global.saveInFile = SharedObject.getLocal('VT1','/folder');
- стало ещё хуже. Теперь никакие файлы вообще не создаются, и ничего не сохраняется.

iNils
10.11.2007, 15:16
Путь должен либо полностью, либо частично совпадать с фактическим путем к фильму.

Livia
10.11.2007, 19:14
iNils, я не поняла, какой путь должен совпадать? Вместо /folder надо указать весь путь C:\Documents and Settings\User\Application Data\... ? Или указывать путь до папки, в которой лежит swf ?

Попробовала посмотреть чужой файл-пример и случайно открыла его из архива rar. При компиляции в папке Flash Player\localhost появился файл \temp\Rar$DI01.149\journal2.swf\JournalObject.sol. Но потом этот же файл распаковала и открыла уже просто - и при компиляции появилась папка ##EEB3833C7FB4D324, а в ней опять - 00000001.sol. Что за чудеса? Причиной может быть ОС или версия Flash Player'а?

Livia
10.11.2007, 21:52
Товарищи! (Господа! Друзья! Мастера! и все остальные!)

Я нашла решение! На англоязычном форуме обсуждалась аналогичная проблема, так вот: не знаю, в чём тут дело, но действительно, при попытке указать путь к файлу в виде
_global.saveInFile = SharedObject.getLocal('VT1','/folder');

ничего не работает. Чтобы два мувика с разными именами или один и тот же, но перемещённый (скопированный) в другую папку, могли читать один и тот же файл, надо указывать путь всего лишь в виде одного слэша:
_global.saveInFile = SharedObject.getLocal('VT1', '/');

Вот теперь создаётся именно тот файл, который вы заказывали, и его видят все мувики, которым это положено. Правда, создаётся этот файл в localhost'е, только если у вас 7-й Player, а если 8-й, то - в
Macromedia\Flash Player\#SharedObjects\UYWRQJQJ (на каждой машине свой набор букв) \localhost\
, но если слэш не писать, то создаётся то, что я описывала раньше. И да, похоже всё-таки, что папки со страшными названиями вроде ##EEB3833C7FB4D324 и файлы 0000001.sol в них произрастают из-за использования русских букв - файл-то у меня назывался по-русски, да и лежал на Рабочем столе.

Спасибо всем, кто потратил время, пытаясь мне помочь.