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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
По умолчанию Ошибка при повторном Event.CONTEXT3D_CREATE

Добрый день! В некоторых случаях при старте приложения несколько раз возникает событие Event.CONTEXT3D_CREATE. После чего все графические элементы как бы сдвигаются. С чем это связано и как это обойти? Спасибо!


Последний раз редактировалось alexandrratush; 25.06.2015 в 20:01.
Старый 26.06.2015, 14:45
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Хм... по простому такого не было) Код в студию
__________________
return this...

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

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Код AS3:
private function init(e:flash.events.Event = null):void
        {
            if (e != null) removeEventListener(flash.events.Event.ADDED_TO_STAGE, init);
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            stage.addEventListener(flash.events.Event.RESIZE, onResizeHandler);
        }
 
        private function onResizeHandler(e:flash.events.Event):void
        {
            if (stage.stageWidth == stage.fullScreenWidth && stage.stageHeight == stage.fullScreenHeight)
            {
                _logger.log("Main: onResizeHandler complete");
                stage.removeEventListener(flash.events.Event.RESIZE, onResizeHandler);
                initStarlingAndContext();
            }
        }
 
        private function initStarlingAndContext():void
        {
            var iOS:Boolean = SystemUtil.platform == "IOS";
            var stageArea:Rectangle = new Rectangle(0, 0, StarlingRoot.STAGE_WIDTH, StarlingRoot.STAGE_HEIGHT);
            var fullScreenArea:Rectangle = new Rectangle(0, 0, stage.fullScreenWidth, stage.fullScreenHeight);
            var viewPort:Rectangle = RectangleUtil.fit(stageArea, fullScreenArea, ScaleMode.SHOW_ALL);
 
            _scaleFactor = calculateScaleFactor(viewPort.width);
            Starling.multitouchEnabled = true;
            Starling.handleLostContext = true;
            RenderTexture.optimizePersistentBuffers = iOS;
 
            _starling = new Starling(StarlingRoot, stage, viewPort, null);
            _assetManager = new AssetManager(_scaleFactor);
            _context = new ApplicationContext(this, _starling, _assetManager, _logger);
            _starling.antiAliasing = 1;
            _starling.stage.stageWidth = StarlingRoot.STAGE_WIDTH;
            _starling.stage.stageHeight = StarlingRoot.STAGE_HEIGHT;
            _starling.enableErrorChecking = Capabilities.isDebugger;
            _starling.showStats = true;
            _starling.addEventListener(starling.events.Event.ROOT_CREATED, starlingRootCreatedHandler);
            _starling.addEventListener(starling.events.Event.CONTEXT3D_CREATE, starlingContext3dCreateHandler);
            _starling.addEventListener(starling.events.Event.FATAL_ERROR, starlingFatalErrorHandler);
            _starling.simulateMultitouch = true;
            _starling.start();
        }
 
        private function starlingRootCreatedHandler(e:starling.events.Event):void
        {
            _logger.log("Main: Starling root created");
            _rootCreated = true;
            initApplication();
        }
 
        private function starlingContext3dCreateHandler(e:starling.events.Event):void
        {
            _logger.log("Main: Starling Context3d created");
            _contextCreated = true;
            initApplication();
        }
 
        private function initApplication():void
        {
            if (_rootCreated && _contextCreated)
            {
                if (!_initApplication)
                {
                    _initApplication = true;
                    _logger.log("Main: init application, scaleFactor: " + _scaleFactor);
                    var root:StarlingRoot = _starling.root as StarlingRoot;
                    root.initApplication(_scaleFactor);
                } else
                {
                    _logger.error("Main: init application already");
                }
            }
        }
 
        private function starlingFatalErrorHandler(e:starling.events.Event):void
        {
            _logger.fatal("Starling Fatal Error: " + JSON.stringify(e.data));
        }
Лог два раза выводит Main: Starling Context3d created. Возникает при публикации приложения, когда телефон заблокирован. После снятия с блока, в некоторых случаях вылетает этот баг. И вся сцена как будто сдвигается в сторону. Устройство Android, запускаю с IDEA.

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

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Только что попробовал запускать приложение с телефона, и ставить на блок. С пятого раза вылетел этот баг.
По логам видно, что уже началась отрисовка окна авторизации, и опять возникло это событие. Внизу видно кнопки авторизации, которые не посередине, и не того размера, который нужен.
Скрин с мобильного:
Нажмите на изображение для увеличения
Название: Screenshot_2015-06-26-14-29-31.png
Просмотров: 104
Размер:	48.5 Кб
ID:	31665

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
мейби
Код AS3:
stage.addEventListener(Event.DEACTIVATE, stage_deactivateHandler, false, 0, true);
 
private function stage_deactivateHandler(event:Event):void
{
	this._starling.stop();
	this.stage.addEventListener(Event.ACTIVATE, stage_activateHandler, false, 0, true);
}
 
private function stage_activateHandler(event:Event):void
{
	this.stage.removeEventListener(Event.ACTIVATE, stage_activateHandler);
	this._starling.start();
}
__________________
return this...

Старый 26.06.2015, 20:42
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 6  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Спасибо за ответ, попробовать смогу только во вторник. Тогда и отпишусь.

Старый 26.06.2015, 21:02
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 7  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
сдвиг скорее всего из-за onResize или OrientEvent
__________________
return this...

Старый 27.06.2015, 11:07
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 8  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
У вас каждый раз создается новый экземпляр старлинг при ресайзе нативного стейджа. Естественно он выдает новый контекст каждый раз.

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от ShockWave512 Посмотреть сообщение
При ресайзе стейджа, надо менять размеры зоны вьюпорта и стейджа самого старлинга. Из-за этого и будут смещатся элементы отрисовки.
Собственно товарищ ShockWave512 говорит о
Код AS3:
stage.addEventListener(flash.events.Event.RESIZE, stage_resizeHandler, false, int.MAX_VALUE, true);
Код AS3:
private function stage_resizeHandler(event:flash.events.Event):void
{
	_starling.stage.stageWidth = this.stage.stageWidth;
	_starling.stage.stageHeight = this.stage.stageHeight;
 
	const viewPort:Rectangle = _starling.viewPort;
 
	viewPort.width = this.stage.stageWidth;
	viewPort.height = this.stage.stageHeight;
 
	try {
		_starling.viewPort = viewPort;
	} catch(error:Error) {}
}
__________________
return this...

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

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Ага, нашел похожий код в примерах feathers, сейчас буду писать тестовое приложение, чтобы проверить данную теорию . Всем спасибо за ответы.

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

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

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


 


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


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