Swift 2.0,SpriteKit – 滚动查看不使用页面。

好的,我有一个scrollView已经被子类化,可以应用到任何场景,这是从我在这里问:

SpriteKit,Swift 2.0 – ScrollView相反

import Foundation import SpriteKit /// Nodes touched var nodesTouched: [AnyObject] = [] // global /// Scroll direction enum ScrollDirection: Int { case None = 0 case Vertical case Horizontal } class CustomScrollView: UIScrollView { // MARK: - Static Properties /// Touches allowed static var disabledTouches = false /// Scroll view private static var scrollView: UIScrollView! // MARK: - Properties /// Current scene private weak var currentScene: SKScene? /// Moveable node private var moveableNode: SKNode? /// Scroll direction private var scrollDirection = ScrollDirection.None // MARK: - Init init(frame: CGRect, scene: SKScene, moveableNode: SKNode, scrollDirection: ScrollDirection) { print("Scroll View init") super.init(frame: frame) CustomScrollView.scrollView = self self.scrollDirection = scrollDirection self.currentScene = scene self.moveableNode = moveableNode self.frame = frame indicatorStyle = .White scrollEnabled = true //self.minimumZoomScale = 1 //self.maximumZoomScale = 3 canCancelContentTouches = false userInteractionEnabled = true delegate = self // flip for spritekit (only needed for horizontal) if self.scrollDirection == .Horizontal { let flip = CGAffineTransformMakeScale(-1,-1) self.transform = flip } } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } // MARK: - Touches extension CustomScrollView { /// began override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { print("Touch began scroll view") guard !CustomScrollView.disabledTouches else { return } currentScene?.touchesBegan(touches, withEvent: event) } /// moved override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { print("Touch moved scroll view") guard !CustomScrollView.disabledTouches else { return } currentScene?.touchesMoved(touches, withEvent: event) } /// ended override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { print("Touch ended scroll view") guard !CustomScrollView.disabledTouches else { return } currentScene?.touchesEnded(touches, withEvent: event) } /// cancelled override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) { print("Touch cancelled scroll view") guard !CustomScrollView.disabledTouches else { return } currentScene?.touchesCancelled(touches, withEvent: event) } } // MARK: - Touch Controls extension CustomScrollView { /// Disable class func disable() { print("Disabled scroll view") CustomScrollView.scrollView?.userInteractionEnabled = false CustomScrollView.disabledTouches = true } /// Enable class func enable() { print("Enabled scroll view") CustomScrollView.scrollView?.userInteractionEnabled = true CustomScrollView.disabledTouches = false } } // MARK: - Delegates extension CustomScrollView: UIScrollViewDelegate { /// did scroll func scrollViewDidScroll(scrollView: UIScrollView) { print("Scroll view did scroll") if scrollDirection == .Horizontal { moveableNode!.position.x = scrollView.contentOffset.x } else { moveableNode!.position.y = scrollView.contentOffset.y } } } 

唯一的问题是scrollview使用页面,而我希望它看起来的样子,只能通过精灵滚动,就像raywenderlich那里所有的精灵是唯一移动的东西,所以我不必滚动多个页面到一个精灵。

该项目可以在这里find:

Raywenderlich项目

因为他们使用他们的gameViewController我有困难搞清楚如何通过像上面我有一个子类滚动视图实现它。

我不明白你在这里问什么。 我刚刚检查了RayWenderlich教程,和我的GitHub示例项目完全一样。 他们只是把精灵放在一起,就像在我的项目中,为了演示的目的,我把每个精灵放在一个新的页面上。

如果你只是想要精灵滚动,只需将精灵添加到可移动节点,其余部分照常直接添加到场景中。

 addChild(background) moveableNode.addChild(sprite1) 

比改变精灵的位置,使他们更接近在一起。 你基本上将第一个精灵添加到第一个页面的scrollView和比其他精灵的位置基于以前的精灵x位置。 您也可以将这些精灵添加到sprite1中。

 let sprite1 = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 50, height: 50)) sprite1.position = CGPointMake(0, 0) page1ScrollView.addChild(sprite1) let sprite2 = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 50, height: 50)) sprite2.position = CGPointMake(sprite1.position.x + (sprite2.size.width * 1.5), sprite1.position.y) sprite1.addChild(sprite2) let sprite3 = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 50, height: 50)) sprite3.position = CGPointMake(sprite2.position.x + (sprite3.size.width * 1.5), sprite1.position.y) sprite1.addChild(sprite3) 

我更新了我的gitHub项目,以显示这个在行动https://github.com/crashoverride777/Swift2-SpriteKit-UIScrollView-Helper