gpt4 book ai didi

swift - 向右动画 UIScrollView

转载 作者:搜寻专家 更新时间:2023-10-31 08:31:47 24 4
gpt4 key购买 nike

如何创建以均匀速度向右移动/滚动可见图像部分的动画?或者更确切地说:如何使 UIScrollView 向右动画?

示例:图像宽度为 4968 像素。该图像用作全屏背景图像。一开始只能看到 4968 像素(图像宽度)的前 1242 像素。可 View 像部分应以匀速向右移动。在任何时候,图像的 1242px 都是可见的。当到达图像末尾时,应重复此过程。

Visualisation of my question

到目前为止,这是我的代码。理解我要完成的东西没有用,因为它不完整,但你看到我在功能更新等中使用了它。

override func update(_ currentTime: TimeInterval) {
if gameStarted == true {
enumerateChildNodes(withName: "background", using: ({
(node, error) in

let bg = node as! SKSpriteNode

bg.position = CGPoint(x: bg.position.x - 2, y: bg.position.y)
}
}))
}
}

最佳答案

如果你想让游戏背景以匀速移动,你根本不需要UIScrollView

但是,要使其顺利迭代,您必须同时持有两张图片。

var imageWidth : Float = 4968
var viewPortWidth : Float = 1242
var velocity : Float = 10
var currentNodeIndex : Int = 0
let backgrounds : [String] = ["background0", "background1"]
var currentNodeName : String {
get {
return backgrounds[currentNodeIndex]
}
}

func setup() {
node : SKNode = SKSpriteNode(imageNamed:"backgroundImage")
node.name = "background0"
node1 : SKNode = SKSpriteNode(imageNamed:"backgroundImage")
node1.name = "background1"
addChild(node)
addChild(node1)
node.position = CGPoint(x: imageWidth, y: 0)
node1.position = CGPoint(x: 0, y: 0)
}

override func update(_ currentTime: TimeInterval) {
if gameStarted == true {
backgrounds.forEach {
enumerateChildNodes(withName: $0, using: {(node, error) in
node.position = CGPoint(x: node.position.x - velocity, y: node.position.y)
})
}
}
}

private func rollImageAroundIfNeeded() {
if needsRollImages() {
rollImagesAround()
}
}

private func needsRollImages() -> Bool {
node : SKNode = childNode(withName:currentNodeName)!
return node.position.x < 2 * (screenWidth - imageWidth)
}

private func rollImageAround() {
node : SKNode = childNode(withName:currentNodeName)!
node.position = CGPoint(x: node.position.x + 2 * imageWidth, y: node.position.y)
currentNodeIndex = (currentNodeIndex + 1) % 2
}

这个想法是,您连续将两个图像的位置向左移动,并在某个阈值处将左图像“包裹”到右侧。

关于swift - 向右动画 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40049720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com