我在sprite kit应用程序中有几层背景,midground,foreground,ground等。
我设法让它们循环,但问题是当它们加载时它们闪烁并且不能从一个图像平滑过渡到另一个图像。
我还遇到了图像之间出现间隙的问题,但是通过在每个图像的宽度上添加一个额外的像素来解决这个问题。
闪烁不会每次都发生并且循环并且似乎与图像的大小(框架或视图)的方式无关,从宽度中移除额外的像素,从而改变速度,更换设备等。
此外,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)
对于此处列出的所有图层,这也是相同的,速度等似乎不会使它变得更好或更糟。
非常感谢任何帮助。
谢谢,
史蒂芬
答案 0 :(得分:1)
我是否认为您需要以不同的速度无休止地移动背景?
我认为当同一个地方有两个图像但是编程不知道哪个需要打开以便彼此交替时会发生闪烁。
PS。这是一个答案,因为我无法评论。