2016-02-24 64 views
2

因此,我希望瞭解如何在Spritekit中使用Swift來製作圖標的滾動視圖(有點像菜單)。我找不到任何不收費的優質資源或教程。使用Swift在Spritekit中滾動查看以編程方式(無故事板)

我有我的基本應用程序與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 
} 

這的確是所有我期待在實現的那一刻,如果你能想象,這樣的事情:

scroll

一些問題我在這裏看到的東西似乎比我想象的要詳細得多,而且在這個階段對我來說太複雜了,或者它們並不迅速...

如何包含滾動視圖? 預先感謝您:)

回答

2

如果您的整個UI是使用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) 
} 

設置的另一個關鍵部分就是讓您的場景適合您的菜單大小。這與scrollview上的內容大小類似。如果您需要這些功能,您可能還需要做一些工作來實現分頁功能或類似UIScrollView功能。但如果你只需要一個簡單的滾動視圖,你可以用相機來完成。

如果你只想要這個視圖上的UIKit元素,它應該可能只是它自己的VC沒有場景。你甚至可以創建這個菜單視圖控制器並將它放置在遊戲場景的容器中 - 這樣你就可以在菜單vc中僅使用UIKit組件,但仍可以在SpriteKit設置中使用它。

相關問題