OGeek|极客世界-中国程序员成长平台

标题: iOS - 如何根据元素的数量调整屏幕上的元素大小 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 19:56
标题: iOS - 如何根据元素的数量调整屏幕上的元素大小

因此,我正在使用 Spritekit 开发一款游戏,该游戏使用 Sprite 金字塔(我们以圆形为例)。用户可以选择他们希望在游戏中拥有的 Sprite 行数。 Sprite 要形成一个金字塔,所以如果你有 1 行,你就有 1 个 Sprite 节点。越往下走(选择的行越多),它就会增加 2 - 创建金字塔形状。因此,如果用户选择了 3 行,游戏板将如下所示: ○ 哦哦哦 O O O O O

但是,当它达到 5 行时,它就失去了金字塔形状,因为屏幕只有这么宽,而且它必须将所有元素都放在屏幕上(元素在更下方的行中更加困惑)。

我的问题是,要解决这个问题,我需要做些什么来调整金字塔的大小并根据选择的行数改变元素之间的间距?我是否必须将间距乘以某个因子?我还听说有人在屏幕上添加图层 - 也许在某种容器中绘制 Sprite ,以便它始终调整金字塔的大小以适应屏幕而不会使金字塔形状倾斜?



Best Answer-推荐答案


你的想法是对的!制作一个 SKNode 容器,然后更新它的 .size 属性,或者执行 .setScale

(现在不在 xcode,如果不是 100%,请原谅)

// Say that our scene's size is 400x400:
let bkg = SKShapeNode(rectangleOfSize: self.size)
bkg.addChild(firstSprite)
bkg.addChild(secondSprite) // And so on...

// Find the farthest point in bkg:
var farthestX = CGFloat(0)
for node in bkg.children {
  if node.position.x + node.frame.size.width / 2 > farthestX {
    farthestX = node.position.x + node.frame.size.width / 2
  }
}

// Do math to resize the bkg:
if self.size.width < farthestX {
  let scaler = self.size.width / farthestX
  bkg.setScale(scaler)
}

这应该可行,或者至少总体思路应该可行...您还需要检查 Y 值和高度。

关于iOS - 如何根据元素的数量调整屏幕上的元素大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44729987/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4