Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблемы с SharedObject (http://www.flasher.ru/forum/showthread.php?t=117494)

sergsa 28.10.2008 23:45

Проблемы с SharedObject
 
Есть массив d, пользователь заполняет его, дублируя и расставляя в рабочей области некоторые мувики. Есть две кнопки по нажатию на которые масив нужно сохранять и открывать. В массиве хранятся продублированные мувики и их свойства: d[i][0]-_x
d[i][1]-_y
d[i][2]-_name
d[i][3]-_rotation
d[i][4]-depth
Но постоянно вылазят какие-то необъяснимые бока... Извиняюсь, но код прилагаю без рамочки, так-как забыл как это делается:
Код:

var so:SharedObject = SharedObject.getLocal("masiv");

function saveit(){so.data.array =d}///-сохранить

///-открыть
function openit(){item=0
for(i in d){eval(d[i][2]).removeMovieClip()}
d=so.data.array
build()
}
function build(){
        for(i in d){item++
        duplicateMovieClip(substring(d[i][2],1,4),d[i][2],d[i][4])
        eval(d[i][2])._x=d[i][0]
        eval(d[i][2])._y=d[i][1]
        eval(d[i][2])._rotation=d[i][3]
        }
        }


DarkLight 29.10.2008 01:05

По коду мало чего понятно, но по личному опыту:
1) сохранение в so несинхронно
2) при чтении лучше убивать ссылку на so и получать заново. В свое время тема на форуме поднималась, у меня получалось читать один so двумя флешками одновременно только при условии пересоздания ссылки на so после каждой записи. И это работало не на всех компьютерах.

sergsa 29.10.2008 01:15

что значит сохранение несинхронно и как сделать синхронным и с чем синхронизировать?
Что значит убивать ссылку?

DarkLight 29.10.2008 01:18

Сохранение несинхронно - значит данные обновятся не в момент, когда Вы сохраняете, а чуть позже. Кстати, чтобы сохранить данные, нужно вызвать метод flush после всех изменений, а в Вашей функции saveit я этого не вижу.

Убить ссылку - обнулить, например.

sergsa 29.10.2008 01:47

Тысяча извинений за тупость ,но всё равно я ничего не понял...
Данные записываются в масив по ходу действий пользователя. А масив в so - по клику на кнопке "сохранить". О каких моментах идёт речь?
И какой смысл обнулять so перед чтением, если мне нужна информация из него? Что я потом считаю, если обнулю?

Mnilionic 29.10.2008 02:49

зачем удалять:
Код:

...for(i in d){eval(d[i][2]).removeMovieClip()}
а затем 'стрить':
Код:

...d=so.data.array
build()

может заранее проверять есть ли куки и 'строить' сразу как положенно?

sergsa 29.10.2008 04:35

удалять что-бы очистить рабочую область, которую потом заполнить новыми объектами на основании информации загруженной из so

затем что-б очистить рабочую область и построить новую композицию на основании информации, полученной из so. Т. е. наставил я объектов, а потом вдруг решил вернуться к сохранённому варианту - существующий вариант удаляем, а на его месте выстраиваем сохранённый


Часовой пояс GMT +4, время: 17:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.