gpt4 book ai didi

ios - swift/SpriteKit : evenly distribute SKShapeNodes horizontally and vertically into a grid

转载 作者:行者123 更新时间:2023-11-30 12:14:11 25 4
gpt4 key购买 nike

我想在屏幕上均匀分布 n 个方形 SKShapeNodes 以创建一个方形网格。我尝试搜索其他示例,但找不到我正在寻找的解决方案,因为大多数解决方案只专注于水平分布 View 。

我正在 for 循环中创建方 block ,但是我只能让它们在 x 轴或 y 轴上移动,而不能同时在两者上移动。下面的示例给了我最好的结果,但正如代码所预期的那样,只有前两个方 block 可见,第三个方 block 是在屏幕外创建的:

amountOfTiles 是一个设置为 4 的 CGFloat

tile 是一个SKShapeNode

func addTiles() {

let screenWidth = self.view?.frame.size.width
tileWidth = screenWidth! / (amountOfTiles / 2)
tileHeight = tileWidth

tileX = 0
tileY = 0

tileRect = CGRect(x: tileX, y: tileY, width: tileWidth, height: tileHeight)

for _ in 0...Int(amountOfTiles) {

tile = SKShapeNode(rect: tileRect)
tile.position = CGPoint(x: tileX, y: tileY)
tile.fillColor = .red

addChild(tile)

tileX += tileWidth
tileY += tileHeight
}
}

我的猜测是我不应该同时更新方 block 的 Y 和 X 位置,但我不知道如何解决这个问题。

最佳答案

我自己修好了。我删除了 amountOfTiles 并为 x 和 y 添加了两个单独的 CGFloats,我在单独的循环中更新了它们:

func addTiles() {

let xAmount:CGFloat = 4
let yAmount:CGFloat = 4

let screenWidth = self.view?.frame.size.width
tileWidth = screenWidth! / (xAmount)
tileHeight = tileWidth

tileY = 0

tileRect = CGRect(x: tileX, y: tileY, width: tileWidth, height: tileHeight)

for _ in 0..<Int(xAmount) {

tileX = 0

for _ in 0..<Int(yAmount) {

tile = SKShapeNode(rect: tileRect)
tile.fillColor = .red

addChild(tile)

tile.position = CGPoint(x: tileX, y: tileY)
tileX += tileWidth
}

tileY += tileHeight
}
}

关于ios - swift/SpriteKit : evenly distribute SKShapeNodes horizontally and vertically into a grid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631387/

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