如何让我的背景图像在 Swift 中永远重复?
Posted
技术标签:
【中文标题】如何让我的背景图像在 Swift 中永远重复?【英文标题】:How would I get my background image to repeat forever in Swift? 【发布时间】:2015-01-24 18:01:46 【问题描述】:我有这两张图片是同一张图片,我希望它们重复,这样背景看起来就在移动。我有这段代码,但只有一个背景图像通过,然后它又回到灰屏。另一个背景图像不跟随第一个。我该如何解决?谢谢! (这是在 swift xcode 中)
func spawnBackground()
let cloud = SKSpriteNode(imageNamed: "CloudBg")
let cloud2 = SKSpriteNode(imageNamed: "CloudBg2")
cloud.position = CGPointMake(frame.size.width + cloud.frame.size.width / 2,cloud.frame.height / 2)
cloud.setScale(1.35)
cloud.zPosition = -15
cloud2.position = CGPointMake(self.size.width/2, self.size.height/2)
cloud2.setScale(1.35)
cloud.zPosition = -15
let moveTop = SKAction.moveByX(0, y: cloud.size.height, duration: NSTimeInterval(CGFloat(gameSpeed) * cloud.size.height))
cloud.runAction(SKAction.repeatActionForever(moveTop))
cloud2.runAction(SKAction.repeatActionForever(moveTop))
addChild(cloud)
addChild(cloud2)
【问题讨论】:
【参考方案1】:我认为您正在寻找这样的动作序列:
let cloud = SKSpriteNode(imageNamed: "CloudBg")
let cloud2 = SKSpriteNode(imageNamed: "CloudBg2")
cloud.position = CGPointMake(frame.size.width + cloud.frame.size.width / 2,cloud.frame.height / 2)
cloud.setScale(1.35)
cloud.zPosition = -15
cloud2.position = CGPointMake(self.size.width/2, self.size.height/2)
cloud2.setScale(1.35)
cloud.zPosition = -15
var actionone = SKAction.moveToX(0, y: cloud.size.height, duration: NSTimeInterval(CGFloat(gameSpeed) * cloud.size.height))
var actiontwo = SKAction.runBlock(
cloud.position = CGPointMake(frame.size.width + cloud.frame.size.width / 2,cloud.frame.height / 2)
)
cloud.runAction(SKAction.repeatForever(SKAction.sequence([actionone,actiontwo])))
当然,您必须编辑此代码才能在一个云到达某个点时另一个云开始的位置工作,但这是一般的想法。
【讨论】:
感谢您的帮助,但在第一个背景图像可以工作之前,它仍然在做同样的事情,但随后没有其他任何事情会跟随或重复。 好吧,我没有在该代码中制作第二张背景图片。只有第一个。另外,我认为应该是 moveToX 。值为 0 的 moveByX 不会执行任何操作...以上是关于如何让我的背景图像在 Swift 中永远重复?的主要内容,如果未能解决你的问题,请参考以下文章