因此,我希望了解如何使用Spritekit
在Swift
中制作图标的滚动视图(有点像菜单)。我无法找到任何不收费的好资源或教程。
我的基本应用程序设置了ViewController和我的场景。 我希望有一个滚动视图,比屏幕高度长2到3倍,我可以向上和向下滚动查看不同的图标。
我希望这是一个很好的实现,所以我可以使用x / y坐标以编程方式设置所有图标。
我的viewdidLoad:
override func didMoveToView(view: SKView) {
/* Setup your scene here */
addChild(worldNode)
//create Scrollview
//for loop to adding icons from top to bottom of scrollview
//name sprites
//use touch location so allow sprites to be clickable
//will just adjust alpha of icon for testing purposes later
}
如果你能想象的话,这就是我现在正在努力实现的目标:
我在这里看到的一些问题似乎比我想象的要详细得多,而且在这个阶段对我来说太复杂了,或者它们不是很快......
如何添加滚动视图? 提前谢谢你:)
答案 0 :(得分:2)
如果您的整个用户界面是使用SpriteKit构建的场景,您可能需要考虑将其构建为带有摄像头的滚动场景。 Here's an example in a gameplay context
基本上它可以像这样工作:
var sceneCam: SKCameraNode! //declare your camera variable in your scene class
然后,在didMoveToView
函数中:
sceneCam = SKCameraNode() //initialize your camera
//scaleAsPoint lets you zoom the camera in and out
sceneCam.scaleAsPoint = CGPoint(x: 0.25, y: 0.25)
camera = sceneCam //set the scene's camera
addChild(sceneCam) //add camera to scene
//position the camera on the scene.
sceneCam.position = CGPoint(x: frame.center.x, y: frame.center.y)
现在,在您的touchesMoved
手势处理程序中,当您检测到平移时,您可以调整相机位置以匹配平移手势转换。
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject() as UITouch
let positionInScene = touch.locationInNode(self)
let previousPosition = touch.previousLocationInNode(self)
let translation = CGPoint(x: positionInScene.x - previousPosition.x, y: positionInScene.y - previousPosition.y)
sceneCam.position = CGPoint(x: sceneCam.position.x - translation.x, y: sceneCam.position.y - translation.y)
}
设置的另一个关键部分是让您的场景适合您的菜单。这与滚动视图中的内容大小类似。如果您需要,您可能还需要做一些工作来实现分页或类似的UIScrollView
功能。但如果您只需要一个简单的滚动视图,就可以使用相机进行操作。
如果你只想在这个视图上使用UIKit元素,它应该只是它自己的没有场景的VC。你甚至可以创建这个菜单视图控制器并将其放在游戏场景的容器中 - 这样你在菜单vc中只使用UIKit组件,但你仍然可以在SpriteKit设置中使用它。