Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
agiliter
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
1

Не работает при загрузке в вк

25.09.2014, 13:33. Просмотров 485. Ответов 13
Метки нет (Все метки)

Добрый день! Решил протестировать своё приложение в ВК. Однако, на сайте оно не работает. Вот код
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package  
{
 
    import flash.text.TextField;
    import Model.*;
    import Controller.*;
    import View.*;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.*;
    import flash.net.*;
 
    public class Main extends Sprite 
    {
        private var flashVars:Object;
        
        private var mainTable:Object;
        private var tableOfItem:Object;
        private var tableOfShip:Object;
        
        private var txtLevel:TextField;
                
        public function Main() 
        {
            trace("Запущен класс Main");        
            mainTable = new Object();
            txtLevel = new TextField();
            txtLevel.autoSize = "left";
            txtLevel.x = 200;
            txtLevel.y = 200;
            addChild(txtLevel);
            addEventListener(Event.ADDED_TO_STAGE, onFlashVarsInit);
        }
 
        public function onFlashVarsInit(e:Event = null):void
        {
            txtLevel.text += "Main добавлен на сцену";
            trace("Main добавлен на сцену");
            flashVars = stage.loaderInfo.parameters as Object;     
           
            if (!flashVars.api_id)
            {   
// -- Your code for local testing:
flashVars['api_id'] = **************;
flashVars['viewer_id'] = *******;
flashVars['sid'] = "***************************";
flashVars['secret'] = "***********";
// -- //
            }           
            if (stage) 
            {
                loadData();
            }               
            else 
            {
                txtLevel.text = "Fail in Main!";
                trace("Fail in Main!");
            }
            
            //newGame(flashVars);
        }
 
        private function loadData():void
        {
            txtLevel.text += " loadData ";
            var loader:URLLoader;
            var request:URLRequest; 
            loader = new URLLoader();
            request = new URLRequest('http://***.ru/Tables/itemData.json');
            try
            {               
                loader.load(request);
                loader.addEventListener(Event.COMPLETE, complete1);
                loader.addEventListener(IOErrorEvent.IO_ERROR, BAD_TEST);
            }
            catch(e)
            {
                txtLevel.text = String(e);
            }               
        }
 
        private function complete1(e:Event):void
        {           
            txtLevel.text += "complete1";
            trace("Good!");
            var jsonStr:String;
            tableOfItem = new Object();
            jsonStr = e.target.data;
            trace("jsonStr " + jsonStr);
            tableOfItem = JSON.parse(jsonStr);
            trace("jsonObj " + tableOfItem);
            mainTable.tableOfItem = tableOfItem;
            
            var loader:URLLoader;
            var request:URLRequest; 
            loader = new URLLoader();
            request = new URLRequest('http://***.ru/Tables/shipTable.json');
            
            loader.load(request);
            loader.addEventListener(Event.COMPLETE, complete2);
            loader.addEventListener(IOErrorEvent.IO_ERROR, BAD_TEST);               
        }
 
        private function complete2(e:Event):void
        {           
            txtLevel.text += "complete2";
            ...         
            newGame(flashVars);
        }
        
        private function newGame(vkData:Object):void
        {
            txtLevel.text += " Запущена функция newGame класса Main";
            trace("Запущена функция newGame класса Main");          
            //removeEventListener(Event.ADDED_TO_STAGE, init);
            
            ... 
        }
 
        private function BAD_TEST(e:IOErrorEvent):void
        {
            txtLevel.text += "BAD_TEST";
            trace("File not found! Ошибка:" + e);
        }
    }
}
Чтобы отследить до какого момента приложение работает ввел текстовое поле txtLevel, которое выводит только "Main добавлен на сцену loadData". То есть дальше loadData, как понимаю, в ВК приложение не работает. В чем может быть причина?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2014, 13:33
Ответы с готовыми решениями:

Не работает экран во время загрузки BIOS, при загрузке ОС работает (материнка MSI B350 pro-vdh, CPU/APU RYZEN 3 2200G)
Здравствуйте. У меня появилась проблема с моим системным блоком. Во время запуска ПК и...

При загрузке WinXP кулер останавливается на ga-k8ns ultra 939, а при перезагрузки, работает нормально
При загрузке WinXP кулер останавливается на ga-k8ns ultra 939, а при перезагрузки, работает...

При загрузке не работает сеть
При включении пк такая проблема. Сеть включена ,показывает что интернет есть и никаких проблем...

Не работает DoEvents при загрузке IE
Ребят мож подскажет кто такая проблема очередная. Такой код Set Shell =...

Не работает клавиатура при загрузке W7
Здраствуйте! Помогите решить проблему! Не работает клавиатура при загрузке windows. Windows 7.Ноут...

13
TanaTiX
Модератор
2798 / 1655 / 168
Регистрация: 19.02.2011
Сообщений: 6,018
Завершенные тесты: 2
25.09.2014, 13:51 2
Может у вас ошибка связана с безопасностью?
0
agiliter
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
25.09.2014, 14:21  [ТС] 3
Цитата Сообщение от TanaTiX Посмотреть сообщение
Может у вас ошибка связана с безопасностью?
А как проверить?

Добавлено через 26 минут
Сделал так
ActionScript 3
1
2
3
4
5
6
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, Security);
private function Security(e:SecurityErrorEvent):void
        {
            txtLevel.text = "Security" + String(e);
            
        }
Выдает
Security[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]
В чем может быть загвоздка?
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
25.09.2014, 14:43 4
Цитата Сообщение от agiliter Посмотреть сообщение
В чем может быть загвоздка?
Возможно в том, что Вы использовали зарезервированное слово.
0
agiliter
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
25.09.2014, 14:54  [ТС] 5
Цитата Сообщение от Theoryofgames Посмотреть сообщение
Возможно в том, что Вы использовали зарезервированное слово.
Security? Переименовал. Никаких изменений
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
25.09.2014, 15:10 6
Прошу прошения, вырвал проблему из контекста.
Как Вам написали выше - проблема в безопасности.
В том месте, откуда вы собираетесь скачивать файл должен лежать файл политики безопасности crossdomain.xml.
0
agiliter
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
25.09.2014, 15:28  [ТС] 7
Цитата Сообщение от Theoryofgames Посмотреть сообщение
В том месте, откуда вы собираетесь скачивать файл должен лежать файл политики безопасности crossdomain.xml.
Лежал еще до этого
XML
1
2
3
4
<cross-domain-policy>
<allow-access-from domain="*.vkontakte.ru" />
<allow-access-from domain="*.vk.com" />
</cross-domain-policy>
0
Onisi_s
1 / 0 / 2
Регистрация: 06.08.2014
Сообщений: 7
26.09.2014, 08:42 8
Возможно потому, что открываете в хроме. Хром блокирует метод load, а события типа ошибок безопасности не диспатчит.
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
26.09.2014, 09:57 9
Поменяйте текст файлв политики безопасности на это:
XML
1
2
3
4
<cross-domain-policy>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy>
и проверьте
0
agiliter
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
26.09.2014, 15:46  [ТС] 10
Цитата Сообщение от Onisi_s Посмотреть сообщение
Возможно потому, что открываете в хроме. Хром блокирует метод load, а события типа ошибок безопасности не диспатчит.
Проверил. Действительно, некоторые функции в хроме не работают, а в мозиле норм.
Цитата Сообщение от Theoryofgames Посмотреть сообщение
Поменяйте текст файлв политики безопасности на это:
<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
Ничего не изменилось.

Скачал Charles. Классная прога. Жаль, что триал. Проверил, не загружались скрипты. Поколдовал с allowDomain, теперь скрипты отрабатывают как положено и картинки загружаются. Вот только не выводятся. Локально работает, а вот когда загружаю на сайт, то нет. Какие-то косяки со stage, как понимаю. Но разобраться пока не получилось
1
agiliter
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
29.09.2014, 20:45  [ТС] 11
Цитата Сообщение от agiliter Посмотреть сообщение
Какие-то косяки со stage, как понимаю. Но разобраться пока не получилось
Реально. Дело было в stage, который я передавал другим объектам. Везде из кода убрал ссылку на stage, и задал размеры и координаты напрямую, руками. И сразу заработало в ВК. Причем, как я уже писал, локально и без этого всё работало. Почему так мне не ясно.
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
30.09.2014, 10:08 12
Цитата Сообщение от agiliter Посмотреть сообщение
Почему так мне не ясно
Скорее всего, потому что в момент запуска ссылка на сцену еще отсутствует, так как swf еще не подгружена. Чтобы работало - нужно вешать слушатель ADDED_TO_STAGE и инициировать все только при добавлении на сцену.
0
agiliter
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
30.09.2014, 11:41  [ТС] 13
Цитата Сообщение от agiliter Посмотреть сообщение
addEventListener(Event.ADDED_TO_STAGE, onFlashVarsInit);
В Main же стоит
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
30.09.2014, 12:06 14
Цитата Сообщение от agiliter Посмотреть сообщение
В Main же стоит
Стоит то стоит - я подразумевал ситуации, когда Вы обращаетесь к вашему Main извне. В момент добавления на сцену у Вас не вешается никакого флага о том, что инициализация успешна, а сторонний класс, обратившийся к Main раньше времени получает в ответ пустой параметр stage.
Это все лишь предположения, просто если ссылка на stage возвращает null и Вы никогда не убираете Main со сцены, это можно означать только то, что действие произошло раньше добавления.
Вообще можно поставить трейсы и посмотреть когда происходит добавление на сцену, а когда обращение.
1
30.09.2014, 12:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2014, 12:06

При загрузке не работает пуск
Ноут загружается играет музыка, далее иконки на рабочем столе открываются, но с открытым окном...

Не работает клавиатура при загрузке
Имеется Windows XP. Проблема: Числа 26 Июля на старую клавиатуру разлили жидкость, после чего...

При загрузке компа мыш не работает
помогите плизз разобраться. При загрузке компа мышь не работает пока не вынешь её из разъёма usb и...


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

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

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