У меня есть несколько слоев фона, среднего, переднего плана, земли и т. Д. В приложении для спрайтов.Фоновые изображения мерцают в приложении SpriteKit с помощью Swift
Мне удалось заставить их зацикливаться, но проблема в том, что когда они загружаются, они мерцают и не плавно переходят от одного изображения к другому.
У меня также была проблема с промежутком между изображениями, но это было разрешено добавлением одного дополнительного пикселя в ширину каждого.
Мерцание не происходит каждый раз, и оно не имеет никакого отношения к тому, как размер изображений (кадр или просмотр), удаление дополнительного пикселя с ширины, изменение скорости, изменение устройства и т. д.
Кроме того, позиции Z одобрены, а порядок игнорирования в диспетчере игровых представлений не влияет на его устранение.
Кто-нибудь не знает, почему это происходит? Есть ли что-нибудь в моем коде, что я сделал неправильно или другие испытывают сходство с SpriteKit? Я не могу найти окончательного сравнения в другом месте.
Вот пример моего кода, который влияет:
В viewDidLoad:
//Declaration of the midground nodes.
var mgImage: SKSpriteNode = SKSpriteNode()
var mgImage2: SKSpriteNode = SKSpriteNode()
В didMoveToView:
//Creates an instance of both sprites that are of the same image that are to be lined up against each other in the x axis creating the illution of continuity.
mgImage = SKSpriteNode(imageNamed: "CityMid.png")
mgImage2 = SKSpriteNode(imageNamed: "CityMid.png")
//Specifies the Z position of the images.
mgImage.zPosition = 1
mgImage2.zPosition = 1
//Scales the image to the correct size of the screen.
mgImage.size.width = self.frame.width + 1
mgImage.size.height = self.frame.height
mgImage2.size.width = self.frame.width + 1
mgImage2.size.height = self.frame.height
//Specicies the x position of the images. By offsetting the second you create the illution of a long, continuous image.
mgImage.position.x = view.bounds.size.width * 0.5
mgImage2.position.x = view.bounds.size.width * 1.5
//Specifies the y postion of the images, obviously these are the same as they are not to be offset at any time.
mgImage.position.y = (self.frame.size.height - self.frame.size.height) + self.mgImage.size.height/2
mgImage2.position.y = (self.frame.size.height - self.frame.size.height) + self.mgImage2.size.height/2
//Prevents aliasing with other nearby spites.
mgImage.texture?.filteringMode = SKTextureFilteringMode.Nearest
mgImage2.texture?.filteringMode = SKTextureFilteringMode.Nearest
//Adds instances of the sprites to the scene.
self.addChild(mgImage)
self.addChild(mgImage2)
Это также одинакова для всех слоев, перечислены здесь и снова, скорость и т. д., похоже, не улучшают или не ухудшают ее в любом случае.
Любая помощь была бы принята с благодарностью.
Спасибо,
Стивен
Звучит примерно правильно. Как мне обойти это? – Fiducial13
Но вы хотите, чтобы он двигался влево и назад вправо или просто бесконечно движущийся фон? – Cing
Бесконечное перемещение в гладкой петле, изменение скорости после определенного количества петель, но совершенно гладкое, без мерцания. – Fiducial13