SpriteKit官方文档翻译和学习(二)---Jumping into Sprite Kit
深入SpriteKit
学习Sprite Kit最好的途径是实战,下面通过一个例子来初探SpriteKit。通过这个例子,你将会学到以下内容:
在一个以SpriteKit框架为基础的游戏中使用场景(scenes)。整个项目需要使用Xocde5.0的集成开发环境。使用Single View Application模版创建项目。创建项目的时候使用以下参数:
Product Name:SpriteWalkthroughClass Prefix:SpriteDevices:iPad创建你的第一个场景Sprite Kit框架内容像其他可视内容一样被放置于一个Window视窗里。SptiteKit框架里的内容都是通过SKView类进行渲染,通常都是首先渲染场景,场景是一个SKScene对象。场景也参与响应链,同时还拥有一些专为游戏匹配的其他特性。
因为SpriteKit框架内容是通过一个视图对象渲染出来的,所以你可以将这个视图与其他视图按照视图层级关系排列。例如你可以创建一个按钮控制层放置在SpriteKit视图之上。或者,你还可以通过按钮为sprite添加交互。之后的例子中,你将看到如何为场景添加交互。
使用Sptite Kit来配置视图控制器
在视图控制器的实现文件头部添加下面代码。
#import <SpriteKit/SpriteKit.h> @interface HelloScene : SKScene @end你不需要做任何修改在视图控制器实现文件中导入场景类的头文件。
- (void)viewWillAppear:(BOOL)animated{ HelloScene* hello = [[HelloScene alloc] initWithSize:CGSizeMake(768,1024)]; SKView *spriteView = (SKView *) self.view; [spriteView presentScene: hello];}运行。
当你制作一款基于SpriteKit框架的游戏时,你可能会根据模块为你的游戏创建不同的场景。例如,为你的主菜单创建一个单独的场景、为你的游戏模块分配一个场景。我们的这个例子也遵循相同的设计,第一个场景显示一个“Hello World”文本。
通常情况下,我们是在场景已经被视图显示出来的时候为场景创建内容。这个例子中,代码应该写在didMoveToView:方法中,说明场景已经被加载到视图中。
在场景中显示Hello World文本
- (void)createSceneContents{ self.backgroundColor = [SKColor blueColor]; self.scaleMode = SKSceneScaleModeAspectFit; [self addChild: [self newHelloNode]];}
-(void)didSimulatePhysics{ [self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop) { if (node.position.y < 0) [node removeFromParent]; }];}当场景处理每一帧的时候,都会执行动作和模拟物理环境。这时你的游戏也会在这个时候执行一些其他的自定义代码。现在,当应用运行到一个新的帧动画的时,它在物理环境下,将移出屏幕外的岩石移除,所以,当程序运行时,帧频就比较稳定了。