Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Dokalan
6 / 6 / 1
Регистрация: 14.08.2015
Сообщений: 62
Записей в блоге: 5
#1

SWF: SharedObject не сохраняет состояние - Программирование Android

05.07.2016, 10:53. Просмотров 440. Ответов 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, в котором я создаю это приложение, а потом в браузере, всё работает отлично, и программа не выдаёт ошибок.
Но при их тестировании на телефоне. обнаружилось, что если первый игрок у себя изменяет видимость кнопки, то при повторном запуске приложения это изменение видит только он, а второй игрок его не видит.
В чём проблема? Подскажите, мне, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2016, 10:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос SWF: SharedObject не сохраняет состояние (Программирование Android):

Сохраняет состояние не всех чекбоксов - PHP
есть 2 столпца по 13 чекбоксов. сделал чтоб при отправке формы сохранялось их состояние (отмечен/не отмечен). 10 первых сохраняет отлично,...

Спящий режим долго сохраняет состояние компьютера - Windows XP
проблемы со спящим режимом, слишком долго сохраняет состояние компьютера а после как полоса загрузки дойдет до конца автоматический...

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

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

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

AS 3.0 Загрузка swf в контейнер другой swf - ActionScript
Подскажите, как в as3 сделать, чтобы подгружаемая флешка появлялась не на тойже сцене, а в окошке? Просто там разные форматы и получается...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nikto
146 / 128 / 34
Регистрация: 28.11.2009
Сообщений: 381
Записей в блоге: 13
08.07.2016, 19:41 #2
Dokalan, вы можете скинуть код непосредственно относящийся к вашей проблеме? Как используете SharedObject, как у вас подгружается .swf, правильно ли тестировали этот .swf в браузере (т.е. все ли действия были аналогичны действиям в приложении adobe air на android)?
Dokalan
6 / 6 / 1
Регистрация: 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, в котором первый игрок сделал изменение, то есть изменил оффлайн на онлайн.
И получается, что если первый игрок закроет своё приложение, а потом вновь его откроет, то он видит картинку онлайн, а у остальных игроков так и остаётся оффлайн.
Nikto
146 / 128 / 34
Регистрация: 28.11.2009
Сообщений: 381
Записей в блоге: 13
13.07.2016, 13:03 #4
Dokalan, точно не уверен, но по сути вызов getLocal подразумевает, что данные будут хранится локально на устройстве, которое подгрузило флешку. Тестирование в браузере и в эмуляторе проходило успешно видимо только потому, что тестировалось всё это на одном устройстве. Попробуйте вместо getLocal использовать getRemote. Если не выйдет, то нужно будет юзать сервер с php.
Dokalan
6 / 6 / 1
Регистрация: 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 ??
Nikto
146 / 128 / 34
Регистрация: 28.11.2009
Сообщений: 381
Записей в блоге: 13
13.07.2016, 17:35 #6
Dokalan, видимо неправильно используете getRemote, но здесь уже подсказать не могу.
Вы имеете в виду, что для подгружаемого swf нужно писать api ??
Да.

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

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

SWF внутри SWF + передача данных в JS - Flash
Здравствуйте, уважаемые форумчане! Если вы не против, перейду сразу к сути: Сам я, к сожалению, флэшем не владею. Есть следующие...

AS 2.0 Сохранение объектов SharedObject на телефоне - ActionScript
Здравствуйте. Пытаюсь добиться сохранения настроек альтернативной флеш-оболочки телефона. Для примера, вставляю в код для записи ...

Регистрация пользователей через SharedObject - ActionScript
Как сделать регистрацию пользователей через SharedObject? Я могу сделать только для одного. Делаем файл сохранения: so=...

Управление значением переменной из двух приложений с помощью SharedObject - ActionScript
Хочу связать 2 приложения (клиент и сервер) Сервер: var Shared_value:SharedObject=SharedObject.getLocal("Share","/"); var...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.07.2016, 18:05
Ответ Создать тему
Опции темы

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