SpriteKit,Swift - 滚动视图不显示

Posted

技术标签:

【中文标题】SpriteKit,Swift - 滚动视图不显示【英文标题】:SpriteKit, Swift - ScrollView Not Showing Up 【发布时间】:2016-01-09 17:44:17 【问题描述】:

好的,所以我用这个方法实现了一个滚动视图:

How to create a vertical scrolling menu in spritekit?

现在,当我启动场景时,除了黑色/灰色背景外,它不显示任何内容

这是我在菜单场景中使用的代码:

import Foundation
import SpriteKit
import UIKit

//let kMargin: CGFloat = 40

//var backButton = SKSpriteNode()
//var selectButton = SKSpriteNode()
var moveableNode = SKNode()
var scrollView: CustomScrollView!
private var imageSize = CGSize.zero

var sprite = SKSpriteNode()

class Menu: SKScene 

func didMoveToView() 

    addChild(moveableNode)

    scrollView = CustomScrollView(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height), scene: self, moveableNode: moveableNode)
    scrollView.contentSize = CGSizeMake(self.frame.size.width, self.frame.size.height * 2)
    view!.addSubview(scrollView)

    sprite =  SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 50, height: 44))
    sprite.position.y = CGRectGetMidY(self.frame) + self.frame.size.height
    moveableNode.addChild(sprite)

  


这可能很明显,但我似乎看不到。

【问题讨论】:

【参考方案1】:

试试这个精​​灵,我在另一个问题中犯了一个错误,它应该是-self.frame.size.height,而不是+。

 sprite = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 50, height: 44))
 sprite.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) - self.frame.size.height)
 moveableNode.addChild(sprite)

检查我的 gitHub 项目

https://github.com/crashoverride777/Swift-2-SpriteKit-UIScrollView-Helper

【讨论】:

那行不通。如果有任何帮助,我正在尝试使滚动视图水平而不是垂直,并且我并没有真正了解我应该如何使用内容偏移,所以我只是跳过了它。但我确实改变了你说要改变的东西,比如委托部分和 spritekit 的翻转。 这似乎也不起作用。我启动菜单场景时的节点数也显示它只有 1 个节点 这绝对有效,我只是在示例项目中尝试了代码。我只是把它放在github上,看看。 github.com/crashoverride777/Swift-2-CustomScrollView-SpriteKit 好的,我查看了您的项目,这对于查看我哪里出错非常有用。但现在我在它的滚动方面遇到了另一个问题。当我向右滚动时,它似乎只滚动一点并停止,但是当我向左滚动时,它滚动得很远。我想从最左边开始场景并向右滚动。 (我应该再做一个问题吗?) 请将我的答案标记为正确。对于水平滚动,它更加棘手,因为您需要以相反的方式定位东西。 UIKit 的坐标与 Spritekit 不同。你需要阅读我解释的我的 gitHub 项目。否则,如果您仍然卡住,请再问一个问题。【参考方案2】:

精灵位置不正确,不确定您想要的位置。我执行以下操作,精灵就会出现在视图中。

sprite.position = CGPoint(x: 200, y: 200)

// To make it a center of the view
sprite.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)

【讨论】:

以上是关于SpriteKit,Swift - 滚动视图不显示的主要内容,如果未能解决你的问题,请参考以下文章

如何将SpriteKit中的单个游戏场景添加到普通的单视图Swift应用程序中

基本的 swift/spritekit 游戏 - 麻烦重绘

SpriteKit 中的水平滚动(与视图控制器相比)

为啥集合视图中的动态集合单元格不显示为给定大小并且在 swift 3 中滚动后会发生变化

Swift SpriteKit SKSpriteNode 的“有时”不显示

从右到左滚动背景 Swift / Sprite Kit