Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Dokalan
6 / 6 / 0
Регистрация: 14.08.2015
Сообщений: 62
Записей в блоге: 5
#1

SWF: SharedObject не сохраняет состояние

05.07.2016, 10:53. Просмотров 471. Ответов 6
Метки нет (Все метки)

Друзья! Помогите, пожалуйста, справиться с проблемой!
Сделал мобильное приложение для нескольких игроков.
Назначение: AIR 20.0 for Android
Сценарий: ActionScript 3.0
У каждого игрока свой персональный файл игры, но их содержимое абсолютно идентично.
На сервер загрузил swf-файл, который подгружается в мобильное приложение каждого игрока.
Особенность этого swf заключается в том, что в его коде использован метод SharedObject. Если подробнее, то там есть кнопка on/off. По умолчанию открывается кнопка offline. После клика на неё появляется кнопка online.
Метод SharedObject сохраняет это изменение кнопки, и при повторном запуске приложения открывается уже не offline, а online. То есть, если первый игрок на своём приложении изменит offline на online, и закроет своё приложение, то второй игрок, запустив свой экземпляр приложения видит это изменение кнопки.
При тестировании работы файлов игроков сначала на штатном эмуляторе Adobe Animate CC 2015, в котором я создаю это приложение, а потом в браузере, всё работает отлично, и программа не выдаёт ошибок.
Но при их тестировании на телефоне. обнаружилось, что если первый игрок у себя изменяет видимость кнопки, то при повторном запуске приложения это изменение видит только он, а второй игрок его не видит.
В чём проблема? Подскажите, мне, пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2016, 10:53
Ответы с готовыми решениями:

Сохраняет состояние не всех чекбоксов
есть 2 столпца по 13 чекбоксов. сделал чтоб при отправке формы сохранялось их...

Спящий режим долго сохраняет состояние компьютера
проблемы со спящим режимом, слишком долго сохраняет состояние компьютера а...

Почему сформированный текстовый документ не сохраняет свое состояние
почему сформированный текстовый документ не сохраняет свое состояние после того...

Магнитола не сохраняет последний воспроизведённый файл (с флешки), а позицию сохраняет
Во общем в машине есть магнитола JVC, в ней есть CD диск, USB flash накопитель...

Каким образом из загруженного swf передать команду прелоадеру на загрузку другого swf?
День добрый. Есть внешний прелоадер, который загружает swf файлы содержащие...

6
Nikto
147 / 129 / 50
Регистрация: 28.11.2009
Сообщений: 396
Записей в блоге: 13
08.07.2016, 19:41 #2
Dokalan, вы можете скинуть код непосредственно относящийся к вашей проблеме? Как используете SharedObject, как у вас подгружается .swf, правильно ли тестировали этот .swf в браузере (т.е. все ли действия были аналогичны действиям в приложении adobe air на android)?
0
Dokalan
6 / 6 / 0
Регистрация: 14.08.2015
Сообщений: 62
Записей в блоге: 5
11.07.2016, 15:58  [ТС] #3
Nikto, Вот код swf-файла, который подгружается:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var saveFile:SharedObject = SharedObject.getLocal("saveFile");
 
if(saveFile.data.num_Img == null)
{
    offline.visible = true;
    online.visible = false;
}
else if(saveFile.data.num_Img == "img1")
{
    offline.visible = true;
    online.visible = false;
}
else
{
    offline.visible = false;
    online.visible = true;
}
 
offline.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToHide_2);
 
function fl_ClickToHide_2(event:MouseEvent):void
{
saveFile.data.num_Img = "img2";
    offline.visible = false;
    online.visible = true;
}
 
online.addEventListener(MouseEvent.MOUSE_DOWN, f2_ClickToHide_2);
 
function f2_ClickToHide_2(event:MouseEvent):void
{
saveFile.data.num_Img = "img1";
    offline.visible = true;
    online.visible = false;
}
=======
Вот так он подгружается в приложение:
ActionScript 3
1
2
3
fl_ProLoader = new ProLoader();
        fl_ProLoader.load(new URLRequest("http://здесь адрес этого swf на хостинге.swf"));
        addChild(fl_ProLoader);
==========
Тестировал в штатном эмуляторе Adobe Animate CC 2015, а потом в браузере. Всё отлично работает, а в телефоне не хочет.
Вернее, в телефоне тоже работает, но при условии, что доступ к подгружаемому swf осуществляется только с того аппарата, с которого он был запущен. То есть сохранённое изменение видит только тот владелец телефона, который нажал на кнопку, и изменил оффлайн на онлайн, и наоборот. Другие пользователи со своих телефонов этих изменений не видят, хотя в их приложения подгружается тот же swf, в котором первый игрок сделал изменение, то есть изменил оффлайн на онлайн.
И получается, что если первый игрок закроет своё приложение, а потом вновь его откроет, то он видит картинку онлайн, а у остальных игроков так и остаётся оффлайн.
0
Nikto
147 / 129 / 50
Регистрация: 28.11.2009
Сообщений: 396
Записей в блоге: 13
13.07.2016, 13:03 #4
Dokalan, точно не уверен, но по сути вызов getLocal подразумевает, что данные будут хранится локально на устройстве, которое подгрузило флешку. Тестирование в браузере и в эмуляторе проходило успешно видимо только потому, что тестировалось всё это на одном устройстве. Попробуйте вместо getLocal использовать getRemote. Если не выйдет, то нужно будет юзать сервер с php.
0
Dokalan
6 / 6 / 0
Регистрация: 14.08.2015
Сообщений: 62
Записей в блоге: 5
13.07.2016, 17:29  [ТС] #5
Nikto,
Не получилось. Программа выдала ошибку:

Error: Error #2134: Cannot create SharedObject.
at flash.net::SharedObject$/getRemote()


Вы имеете в виду, что для подгружаемого swf нужно писать api ??
0
Nikto
147 / 129 / 50
Регистрация: 28.11.2009
Сообщений: 396
Записей в блоге: 13
13.07.2016, 17:35 #6
Dokalan, видимо неправильно используете getRemote, но здесь уже подсказать не могу.
Вы имеете в виду, что для подгружаемого swf нужно писать api ??
Да.

А вообще зачем вам подгружать swf? Гораздо лучше переписать приложение, чтобы swf не приходилось скачивать, а сама swf уже была в коде. И при этом иметь сервер, на котором вы сможете сохранять различные данные.
0
Dokalan
6 / 6 / 0
Регистрация: 14.08.2015
Сообщений: 62
Записей в блоге: 5
13.07.2016, 18:05  [ТС] #7
Nikto, Тот swf, который я показываю вам в качестве примера - это кнопка on/off, которая есть у каждого игрока. Она может находиться под управлением только того, кто ею владеет. А остальные игроки, подгружая её в своё приложение должны только лишь видеть статус этого игрока, которым он и управляет. Другого способа, кроме как подгружать статус в персональное приложение каждого игрока, я не знаю.

Если теперь всё упёрлось в написание АПИ, то... У меня внутри всё аж похолодело! Я не умею его писать!
0
13.07.2016, 18:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2016, 18:05

Сохранение объектов SharedObject на телефоне
Здравствуйте. Пытаюсь добиться сохранения настроек альтернативной флеш-оболочки...

Регистрация пользователей через SharedObject
Как сделать регистрацию пользователей через SharedObject? Я могу сделать только...

SWF внутри SWF + передача данных в JS
Здравствуйте, уважаемые форумчане! Если вы не против, перейду сразу к сути:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru