如何在 spritekit 中使用页面控件? (以编程方式)

Posted

技术标签:

【中文标题】如何在 spritekit 中使用页面控件? (以编程方式)【英文标题】:How to use page controls in spritekit? (Programatically) 【发布时间】:2019-08-29 20:14:52 【问题描述】:

我正在创建一个游戏,我想包含一个页面控件(屏幕底部的三个点 - 我会发布一张图片,但我需要更多的声誉!)。这样用户在浏览场景时就知道他们在哪个页面上。 我使用 SpriteKit 创建了我的游戏,我想知道是否有办法以编程方式添加它(不使用故事板)。

【问题讨论】:

【参考方案1】:

在一个 ios 游戏模板 Playground 中,我可以使用以下代码实现这一点(前两行来自模板,其余是我添加的):

// Load the SKScene from 'GameScene.sks'
let sceneView = SKView(frame: CGRect(x:0 , y:0, width: 640, height: 480))

let pageControl = UIPageControl()
pageControl.translatesAutoresizingMaskIntoConstraints = false
pageControl.numberOfPages = 3
pageControl.currentPage = 1
sceneView.addSubview(pageControl)

// Centre the control left-to-right
pageControl.centerXAnchor.constraint(equalTo: sceneView.centerXAnchor).isActive = true
// Place the control 20 points up from the bottom edge
pageControl.bottomAnchor.constraint(equalTo: sceneView.bottomAnchor, constant: -20).isActive = true

要收到与UIPageControl 交互的通知,请为该事件注册一个处理程序:

pageControl.addTarget(thing, action: #selector(Thing.handlePagingEvent), for: .valueChanged)

(其中thing 的类型为Thing - 您的应用结构将确定逻辑上应该是哪个对象)

这假设您有一个SKView,其中您呈现三个SKScenes 之一。如果您实际上有一个包含三个SKViews 的UIScrollView,那么请改用UIScrollView.indicatorStyle

【讨论】:

以上是关于如何在 spritekit 中使用页面控件? (以编程方式)的主要内容,如果未能解决你的问题,请参考以下文章

在 SpriteKit 中添加基本的左右点击并按住控件时遇到问题

如何使用 Swift 5 在 SpriteKit 中以某个角度应用Impulse?

是否可以在Spritekit项目中以编程方式更改纹理色调?

使用 SpriteKit 如何以随机但一致的速度将精灵节点移动到一个点

如何以编程方式截屏(Swift、SpriteKit)

如何在 SpriteKit 中使用 SKShapeNode 通过触摸特定路径来绘制路径