Показать сообщение отдельно
Старый 15.08.2013, 01:27
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 14  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Инициализовать Starling очень просто, в примерах это делают приблизительно так:
Код AS3:
MyStarling = new Starling(RootUI, stage);
MyStarling.addEventListener('rootCreated', OnStarlingRootCreated);
MyStarling.addEventListener('context3DCreate', OnContext3DCreated);
MyStarling.enableErrorChecking = false;
MyStarling.showStats = true;
MyStarling.start();
В минимальном примере слушатели событий не нужны, первый позволяет получить экземпляр созданного Starling root-класса, второй - отслеживать падения контекста отрисовки(нужно в более-менее крупных проектах, обычно под Android), для повторной загрузки ресурсов в видеопамять. Пересоздание VBO, загрузку текстур и шейдеров Starling обычно берет на себя, это происходит если сделать вот так:
Код AS3:
Starling.handleLostContext = true;
Но часто это может стать помехой разработчику, так как для повторной загрузки текстуры в видеопамять мы должны держать её данные в оперативной памяти, поэтому иногда приходится отслеживать падение контекста вручную, показывать пользователю прогрессбар, и быстро-быстро подгружать нужные файлы . Эта проблема обсуждалась еще год назад, но с тех пор, если не ошибаюсь, никаких удобных способов её решения не появилось, за исключением свойства onRestore у класса Texture, позволяющего задать функцию, которая восстановит текстуру после потери контекста. Это, конечно, если не использовать "родной" AssetManager Starling, у него учитывается возможность потери контекста и он умеет использовать это свойство.

Какова роль класса, инициализируемого Starling, или где хранить экземпляр самого Starling - это решать лучше исходя из своего видения архитектуры, могу сказать только что root-класс обязательно должен быть наследником starling.display.DisplayObject.