• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS - 如何根据元素的数量调整屏幕上的元素大小

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:56:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

因此,我正在使用 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap