Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SpriteKit和可滚动列表_Ios_Objective C_Sprite Kit - Fatal编程技术网

Ios SpriteKit和可滚动列表

Ios SpriteKit和可滚动列表,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我一直在试图找到一种“简单”的方法,为我的SpriteKit游戏提供一个可滚动的垂直列表 我将使用它来实现我游戏中的商店/升级部分,因此我希望用户能够向下滚动列表以查看可能的不同升级 我看过不少关于将UIScrollView集成到SpriteKit中的帖子,但大多数帖子似乎都会滚动整个屏幕 到目前为止,我得到的是: -(void) createSceneContents { [super createSceneContents]; _scrollView = [[UISc

我一直在试图找到一种“简单”的方法,为我的SpriteKit游戏提供一个可滚动的垂直列表

我将使用它来实现我游戏中的商店/升级部分,因此我希望用户能够向下滚动列表以查看可能的不同升级

我看过不少关于将UIScrollView集成到SpriteKit中的帖子,但大多数帖子似乎都会滚动整个屏幕

到目前为止,我得到的是:

-(void) createSceneContents
{
    [super createSceneContents];




    _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10,100, 250, 200)];
    _scrollView.contentSize                     = CGSizeMake(2000, 120);
    _scrollView.scrollEnabled                   = YES;
    _scrollView.showsHorizontalScrollIndicator  = YES;
    _scrollView.backgroundColor                 = [UIColor brownColor];

    [self.view addSubview:_scrollView];

    //Test sprites for scrolling and zooming
    SKSpriteNode *greenTestSprite = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor]
                                                                 size:CGSizeMake(25, 25)];
    [greenTestSprite setName:@"greenTestSprite"];
    greenTestSprite.position = CGPointMake(25, 125);



    [self addChild:greenTestSprite];

    //[self addChild: [self newMenuNode]];
}
我在想,对我来说,能够将绿色测试精灵添加到UIScrollView中最简单的方法是什么。我无法像其他人那样理解我的想法,因为他们似乎将UIScrollView的滚动与SKView连接起来,使屏幕看起来像是在滚动

我相信有一个更简单的方法可以做到这一点,但我已经寻找了一段时间了

任何帮助都将不胜感激


感谢提前分配。

您可以在
SpriteKit
应用程序中使用
UIKit

如果你使用
UIScrollView
你将不得不在重复使用单元格、布局、用户交互等方面弄脏你的手。如果你只是使用(并定制)一个
UITableView,你实际上可以让一个单元格看起来很好(而一个单元格是一个
UIView
,因此你可以在其中删除一堆子视图)

您的层次结构将是:

场景:
TableView

如果可能的话,我会避免使用
UIKit
组件。当您的
UIView
UIKit
组件的父级时,很难与
SKView
中的
SpriteKit
组件进行交互。创建
SKNode
子类并创建一个“ScrollingNode”非常容易,它使用
SKView
上的手势识别器进行滚动。下面是一个例子:


另一个很好的教程是。转到手势识别器末尾的部分。

我已经给出了另一个答案,但如果您确实希望在滚动视图中使用[\u scrollview addChild:greenTestSprite],则应该使用它。您当前正在将其添加到主视图中。谢谢,我想我可以做一些事情来允许选中精灵。@davbryn顺便说一句,这不起作用:-(嘿,谢谢allot看这个。这看起来正是我需要的。我设法使用了UIScrollView,但它有问题,结果只是放弃了整个想法,并用按钮来滚动。今晚我会试试这个!嗨,Jen,你知道有什么办法不让你的滚动节点滚动到全屏。我只需要滚动一下就可以了我将在屏幕的一小部分内。我一直在四处闲逛,无法找到它。提前感谢!嗨,Dave3of5,我已经更新了我的代码库,希望你会发现一些有用的东西。基本上我做了两件事:(1)使用SKCropNode屏蔽不应该显示的滚动内容,以及(2)为滚动节点实现委托方法
手势识别器:shouldReceiveTouch
,以忽略滚动节点父节点之外的任何触摸。请查看我发布的代码上的
JADPartScrollingScene
。理想情况下,您可能希望创建一个名为
SKScrollingWindow
的新类将该场景的init中发生的一切封装起来。