2013-11-22 3 views
1

У меня стандартная UIViewController (TestViewController), а в viewWillLayoutSubviews этого контроллера метода, который я экземпляр нового SKView подкласс (TestView) и добавить его в качестве подвида к контроллер. Кроме того, я добавляю несколько кнопок, которые предназначены для управления пользователями в подклассе SKScene (TestScene). TestScene создан в init метод на TestView. Сразу же после того, как TestView добавляется вид TestViewController как подвид я называю [TestView presentScene] который является метод на TestView что просто вызывает [само presentScene: testScene].Добавления нового SKSpriteNode к SKScene имеет большое прерывистое отставание

При нажатии указанных кнопок на TestViewController предназначен для вызова метода TestScene (через TestView), который будет создавать новый SKSpriteNode подкласс (TestSpriteNode) и добавить его в качестве ребенка на сцену. Это действительно работает, но моя проблема заключается в том, что для первого TestSpriteNode для добавления добавляется прерывистая задержка в TestScene, создающая новый спрайт. Время от времени он отлично работает, но большую часть времени он застрянет, и после нескольких касаний кнопки сразу появятся несколько спрайтов, после чего все будет отлично функционировать. Я должен упомянуть, что эта проблема возникает как на симуляторе, так и на моем устройстве.

Я попытался добавить новый TestSpriteNode в в TestScene в - (ничтожной) didMoveToView: (SKView *) вид в результате TestSpriteNode появляются сразу, а затем там быть задержка при нажатии кнопки добавить новый TestSpriteNode. Добавляя точку останова к методу, который кнопка нажимает на TestScene, я вижу, что он вызывается немедленно, но добавленный TestSpriteNode не отображается немедленно.

Я заранее извиняюсь, если уже есть ответ, который вызывает задержки при рендеринге динамически добавленных SKSpriteNodes, я не смог его найти. Есть ли что-то, что я неправильно понял о добавлении новых SKSpriteNodes в SKScene?

+0

Я нашел решение своей проблемы здесь [ссылка] (http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=9203).Создание новых SKScenes для разных экранов, а не новых UIViewControllers устраняет проблему. – Bokoskokos

ответ

0

Без кода трудно сказать. Но учтите это: если спрайт использует текстуру, которая не была загружена в память, создание спрайта загрузит файл изображения в виде текстуры. Чем больше изображение, тем больше времени требуется для его загрузки. Это не произойдет для последующих спрайтов с использованием той же текстуры.

Если вы еще не убедитесь, что все изображения добавлены в SKTextureAtlas и предварительно загрузите атлас текстуры до или во время создания сцены. Атлас позволит вам получать текстуры по имени изображения и использовать их для создания спрайтов без каких-либо задержек с загрузкой текстуры.

+0

Спасибо за подсказку @ LearnCocos2D! Это не было моей проблемой, но я буду помнить об этом в будущем. – Bokoskokos