2015-11-03 2 views
1

У меня есть несколько слоев фона, среднего, переднего плана, земли и т. Д. В приложении для спрайтов.Фоновые изображения мерцают в приложении 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) 

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

Любая помощь была бы принята с благодарностью.

Спасибо,

Стивен

ответ

1

Am я правильно, что вы хотите бесконечно движущуюся фон с разной скоростью?

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

PS. Это ответ, потому что я не могу комментировать.

+0

Звучит примерно правильно. Как мне обойти это? – Fiducial13

+0

Но вы хотите, чтобы он двигался влево и назад вправо или просто бесконечно движущийся фон? – Cing

+0

Бесконечное перемещение в гладкой петле, изменение скорости после определенного количества петель, но совершенно гладкое, без мерцания. – Fiducial13

Смежные вопросы