Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.07.2013, 14:08
webpenza вне форума Посмотреть профиль Отправить личное сообщение для webpenza Найти все сообщения от webpenza
  № 1  
Ответить с цитированием
webpenza

Регистрация: Jul 2013
Сообщений: 4
По умолчанию Ошибка при обращении к Stage

Добрый день!

Возникла следующая проблема:

Приложение работает из VK. Есть загрузчик приложения, который отображает процесс загрузки и инициализирует само приложение игры.

Так вот, в момент инициализации приложения из загрузчика приложение падает на обращении к Stage.

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

У некоторых людей грузиться нормально, у некоторых не инициализируется по непонятным причинам.

Этот метод вызывается из загрузчика когда игра загружена:

Код AS3:
		public function initGame(loadingDataComplete:Function, rebuild:Function, resourcesManager:*):void
		{
			this.loadingDataComplete = loadingDataComplete;
			Singleton.rebuild = rebuild;
			new ResourcesManager(resourcesManager);
 
			if (stage)	init(null);
			else		this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
а вот метод init, в нем собственно и падает приложение:

Код AS3:
		private function init(e:Event):void 
		{
			MonsterDebugger.initialize(this);
			if (e) removeEventListener(Event.ADDED_TO_STAGE, init);
			Security.allowDomain("*");
			MonsterDebugger.trace(this, "GAME INIT");
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.frameRate = 24;
			Singleton.rStage = stage;
			Settings.stageH = stage.stageHeight;
			Settings.stageW = stage.stageWidth;
 
			Singleton.isoWorld = new IsoWorld( 37, -45, 0);
			Singleton.isoWorld.tileHalfHeight = 15;
			Singleton.isoWorld.tileHalfWidth = 25;
			new CookiesController();
			new SoundsManager();
			new APIController();
			firstLoadManager = new FirstLoadManager(initClasses);
		}
выполнение останавливается на строчке stage.scaleMode = StageScaleMode.NO_SCALE;

Если ее убрать, то на следующем обращении к storage.

Подскажите, может есть какие-то настройки безопасности в браузере или системы, которые запрещают такие обращения?

Или какие еще причины могут привести к подобному поведению и как их обойти?

Спасибо!

Старый 16.07.2013, 14:26
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Вот так делать не нужно:
Код AS3:
if (e) removeEventListener(Event.ADDED_TO_STAGE, init);
Я имею в виду при удалении слушателей не надо ничего проверять. Это безопасная операция.
Здесь я процентов на 99.9 уверен, что проблема именно в том, что слушатель не удаляется.
Советую написать просто
Код AS3:
removeEventListener(Event.ADDED_TO_STAGE, init);
Вообще, такие проблемы чаще всего и возникают потому, что не все слушатели были удалены

Старый 16.07.2013, 15:11
webpenza вне форума Посмотреть профиль Отправить личное сообщение для webpenza Найти все сообщения от webpenza
  № 3  
Ответить с цитированием
webpenza

Регистрация: Jul 2013
Сообщений: 4
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Вот так делать не нужно:
Код AS3:
if (e) removeEventListener(Event.ADDED_TO_STAGE, init);
Я имею в виду при удалении слушателей не надо ничего проверять. Это безопасная операция.
Здесь я процентов на 99.9 уверен, что проблема именно в том, что слушатель не удаляется.
Советую написать просто
Код AS3:
removeEventListener(Event.ADDED_TO_STAGE, init);
Вообще, такие проблемы чаще всего и возникают потому, что не все слушатели были удалены
Исправил, не помогло, загрузка падает на том же месте.
Если проблема с удалением слушателя, то почему она повторяется не у всех?

Старый 16.07.2013, 14:40
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 4  
Ответить с цитированием
Babylon
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
hasEventListener()

Старый 16.07.2013, 15:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Значит с другим слушателм проблема, в другом месте. Тут можно только гадать. Наверняка это происходит не сразу после запуска приложения, а после создания каких-нибудь новых экземпляров того, что уже было создано
Конкретно в этом участке кода я каких-то особых проблем не вижу.
Цитата:
Сообщение от Babylon Посмотреть сообщение
hasEventListener()
Думаю это имеет смысл делать, например перед отправкой события. Так как создание события операция более затратная, чем удаление слушателя. Тем более эта проверка проходит автоматически при вызове removeEventListener

Старый 16.07.2013, 16:43
webpenza вне форума Посмотреть профиль Отправить личное сообщение для webpenza Найти все сообщения от webpenza
  № 6  
Ответить с цитированием
webpenza

Регистрация: Jul 2013
Сообщений: 4
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Значит с другим слушателм проблема, в другом месте. Тут можно только гадать. Наверняка это происходит не сразу после запуска приложения, а после создания каких-нибудь новых экземпляров того, что уже было создано.
Чем могут мешать другие слушатели?

Старый 16.07.2013, 18:44
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 7  
Ответить с цитированием
Babylon
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Думаю это имеет смысл делать, например перед отправкой события. Так как создание события операция более затратная, чем удаление слушателя. Тем более эта проверка проходит автоматически при вызове removeEventListener
Что вы говорите. Значит можно по нескольку раз использовать removeEventListener

Старый 16.07.2013, 18:03
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Объясните еще раз структуру.
Приложение ВК без враппера? Отдельный прелоадер лежащий в вк грузит приложение, лежащее в вк? Или на ваеш сервере? Очень похоже на безопасности ошибку. Падает с каким объяснением? Не найден стейдж или нельзя его трогать?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 17.07.2013, 09:30
webpenza вне форума Посмотреть профиль Отправить личное сообщение для webpenza Найти все сообщения от webpenza
  № 9  
Ответить с цитированием
webpenza

Регистрация: Jul 2013
Сообщений: 4
Цитата:
Сообщение от GBee Посмотреть сообщение
Объясните еще раз структуру.
Приложение ВК без враппера? Отдельный прелоадер лежащий в вк грузит приложение, лежащее в вк? Или на ваеш сервере? Очень похоже на безопасности ошибку. Падает с каким объяснением? Не найден стейдж или нельзя его трогать?
В ВК прелоадер, грузит основное приложение с другого сервера.
Цитата:
Вы ошибку то можете показать?
Сейчас попробую выловить с какой ошибкой падает. Проблема в том что у меня грузится нормально, всё тестирую через пользователей у которых не грузится, а они не всегда онлайн.

Добавлено через 1 час 18 минут
Ошибка безопастности Error #2070

Добавлено через 2 часа 25 минут
Проблема решена, сделал как описано здесь http://www.flasher.ru/forum/showpost...46&postcount=6 - загрузил дочернюю флешку в текущий securityDomain.
Всем ответившим спасибо за помощь.

Старый 16.07.2013, 19:22
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 10  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Вы ошибку то можете показать?

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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