- 浏览: 431395 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
IThead:
纠结了几天,用了你的方法,现在解决了,谢谢!
Eclipse 写Javascript卡死问题 -
Rubicon__:
你好,我在运用PageWidget这个类时,出现第一页翻到第二 ...
android翻书效果实现原理( 贝塞尔曲线绘制原理/点坐标计算) -
lionios:
如果不显示printDialog,则打印出来的是空白页,请问你 ...
Print打印机例子 -
rayln:
weiqiulai 写道哥们儿,我怎么没有看到监控队列的配置和 ...
JMS监听MQ实例 -
weiqiulai:
哥们儿,我怎么没有看到监控队列的配置和代码?
JMS监听MQ实例
转载:http://blog.csdn.net/kobbbb/article/details/9093601
OS 7新引入的Sprite Kit类库算是给iOS游戏开发者带来一些福音吧,由于是用底层的东西做开发,在效率方面应该会有很大的提高。也不单单是在游戏方面,任何需要动画效果的app也可以利用Sprite Kit来实现。
每天抽点时间出来学习一下,做一下笔记,今天是第一次学习笔记,先跟大家总体的介绍一下整个Sprite Kit框架,接下来会利用官方的例子带大家进入Sprite Kit。学过cocos2d的朋友可能会学得比较快,其实很多东西都是相通的,有关cocos2d的东西就不多说。
如上图所示,这是每一帧会做的事情,更新每一帧的内容,然后是场景中的行为,再就是物理系统,最后通过SKView进行渲染。可以通过一个UIviewController,将其view object的class属性由UIView改为SKView,然后在上面做你想要渲染的东西,可以通过storyboard对其view进行修改,有了SKView之后就需要SKScene了,再场景中添加你要的游戏对象,这不难理解吧。Sprite Kit好像没有Layer的概念,可以直接在Scene上面直接画东西,SKSpriteNode便是你要在Scene上面呈现的精灵,另外添加文本为SKLabelNode,同样继承SKNode,建议大家去了解一下整一个的Node Tree。
大概的框架逻辑就是,在Sprite View上添加Sprite Scene,Sprite渲染在Scene上,Node Tree展示了所有可以出现在Scene上的东西,node可以执行action,Scene上有物理系统,由于目前相关资料比较少,官方文档都是英文,本人阅读能力有限,大概知道也就这些,在后续学习的过程中会加点补充,或者深入给大家介绍。
好了,有了一个大概了解之后,开始用例子了来学习Sprite Kit
首先iOS 7只能在Xcode5.0或者以上版本进行开发,Xcode5.0的运行环境为OS X 10.8以上,新建一个项目,在class prefix那里填上Sprite,平台选择iPhone,创建之后,第一步在项目中导入Sprite Kit Framwork,在storyboard中,展开Sprite View Controller,选中View,在右边的identity inspector面板里,将custom class改为SKView。目前好像没有SKView可以直接创建的,所以只能通过这种方法来创建SKView。
在SpriteViewController.h文件里添加语句:#import <SpriteKit/SpriteKit.h>
在viewDidLoad函数里对SKview做一些初始化操作
获取当前的SKView需要讲view强制转化为SKView,showFPS显示帧数,showsDrawCount显示当前绘画次数,showsNodeCount显示当前node的数量
创建一个新的类继承SKScene,命名为HelloScene,在SpriteViewController.m文件#import “HelloScene.h”
在viewWillAppear:animated函数里实现如下代码:
通过设置size初始化一个HelloScene,presentScene:可以理解为显示Scene,如果当前SKView有一个Scene也会被新的Scene替代。
如无意外,运行之后可以看到模拟器里一个空的黑色界面,在最下面一行显示 0 nodes 0 draws 60.0fps
接下来我们要在HelloScene里添加一些东西,在HelloScene.h里添加 @property BOOL contentCreated;
在.m文件里面添加如下代码:
这里didMoveToView:函数在Scene被present到SKView后立即执行,我们可以在这里对Scene做一些初始化,设置背景颜色为蓝色,scaleMode为适应Scene大小,然后在Scene上添加一个SKLabelNode,在newHelloNode函数中,我们设置其字体样式,文本内容,字体大小,位置,这些应该不难理解。
允许一下,效果图如下:
接下来,我们再为文本添加一些动作,实现一下动画效果,还是在.m文件里,添加如下代码:
这里重写了touchesBegan:withEvent函数,即点击屏幕便开始播放动画。定义一个动作,上面的代码写得很清楚,Sprite Kit自带的很多种,我解释一下上的各个动作吧,哦,这里说一下,可以通过name属性拿到具有相同name的node,它允许多个node具有同样的名字。第一个动作是上升100个单位,时间间隔为0.5,第二个动作是放大2倍,然后停0.5秒,接着fadeOut,最后一个是将labelNode从Scene里面移除,将这几个动作用一个队列连接起来,它便会一个接一个地播放下去,然后runAction就ok了。
运行,点击屏幕,动画开始执行,如无意外,整个HelloWorld会照着我们的动作而行动着,这时可以观察一下最下面一行nodes和draws的数量变化,动画执行完后我们发现,它停住,只剩下蓝色的Scene,好吧,现在我们要它完成后跳转到另一个Scene
来咯,新建一个类,同样继承SKScene,命名为SpaceshipScene,添加如下代码,对其进行初始化设置:
判断是否创建,然后初始化,为了区分,我们把背景颜色设置为黑色,然后是Scene跳转的实现,在HelloScene.m中#import “SpaceshipScene.h”,在touchesBegan:withEvent函数里将runAction:函数更改为:
根据字面意思,不难知道,此函数作用为执行动作moveSequence后执行block中的内容,我们就是在这个block里面实现跳转,设置跳转的方式,SpriteKit提供好几种跳转方式,大家可以一一去试一下,这里用上下拉开Scene的方式,调用view的presentScene函数,此时我们添加一个跳转效果,所以调用presentScene:transition函数,将我们设置的transition赋值给它就搞定了。
运行,在文本动画结束后边会按我们设置的跳转方式跳转到黑色的SpaceshipScene,很简单吧,没错,就是这么简单。
接着我们再添加一些比较复杂的SKSpriteNode,让我们的场景不再空荡荡的
在SpaceshipScene.m里的createSceneContents函数里添加如下代码:
实现newSpaceship函数:
通过设置颜色和大小初始化一个SKSpriteNode,并为其添加动作,repeatActionForever:即永远重复的播放动画
这样的一个SKSpriteNode未免太简单了,我们再给添加两个子对象,这里简单说一些父子关系,对父对象的平移、放大、旋转等操作会连带子对象一起,而子对象自身的操作则不会影响父对象。
在newSpaceship函数里面,runAction的后面添加如下代码:
接着实现newLight函数:
同样初始化设置颜色和大小,注意,light的position属性的参照物为其parent,即hull。这里我们为light添加了一个闪烁的动作,用fadeOut和fadeIn可以实现,也是永远重复执行。
这个时候运行一下程序,再执行到SpaceshipScene这里,会看到一个ship带着左右两个闪烁的光点在屏幕上来回运动。
再来点更好玩的,物理系统,为我们的游戏对象加上物理效果,come on
在newSpaceship函数添加代码:hull.physicsBody = [SKPhysicsBodybodyWithRectangleOfSize:hull.size];这样就为我们的ship添加了一个物理系统,运行程序执行到SpaceshipScene这里,奇怪的事情发生咯,我们的ship没按照我们的动画反而自己往下掉,掉出了屏幕可视范围外,做过2D游戏的应该知道的啦,这是重力影响的结果,我们只需再添加一行代码:hull.physicsBody.dynamic = NO;即不使用重力效果,这时再运行,发现又恢复正常了。
我们再添加一下下落的陨石,这时我们需要使用重力效果。还是在SpaceshipScene.m文件的createSceneContents函数里面,添加代码:
接着实现addRock方法:
这里又有了一个新的动作函数,performSelector:onTarget:,在动作执行的时候便调用addRock函数,注意这里执行一个重复动作的是self即Scene执行的,两个内联函数是为了计算下落陨石的初始x坐标,使其随机从上边缘任意点下落,addRock方法中,设置陨石的颜色大小位置名字属性。然后添加物理系统,这里需要注意的是usesPreciseCollisionDetection属性,使用精确的碰撞检测,有经验的朋友应该知道,在两个相撞物体,当有其中一个速度过快时,普通碰撞检测无法检测到,速度快的物体将直接穿过另一个物体,或者承受物体足够大,在还没穿越的时候检测到碰撞也是可能的。当启用usesPreciseCollisionDetection属性后,便可精确检测出这些碰撞,在本例子中,陨石速度不算太快,所以设不设置都没有影响,最后别忘了将陨石添加为Scene的child
还有就是,在陨石掉出屏幕后要销毁陨石,不然陨石一直存在,越来越多,最终会使程序崩溃。在SpcaeshipScene.m文件里面重写didSimulatePhysics函数,这是一个每一帧都会调用的函数,模拟物理系统完成后执行,判断每个陨石的y坐标,超出屏幕便从父对象里移除。代码如下:
enumerateChildNodesWithName:usingBlock:函数可以取得所有具有name的nodes,这里取得node,并移除。
这是最终效果图:
这些都只是写皮毛的东西,相对来说比较简单,不过,还是挺好玩的,接下来会继续学习,然后陆续放上自己的学习笔记,最后是整个demo的源码
OS 7新引入的Sprite Kit类库算是给iOS游戏开发者带来一些福音吧,由于是用底层的东西做开发,在效率方面应该会有很大的提高。也不单单是在游戏方面,任何需要动画效果的app也可以利用Sprite Kit来实现。
每天抽点时间出来学习一下,做一下笔记,今天是第一次学习笔记,先跟大家总体的介绍一下整个Sprite Kit框架,接下来会利用官方的例子带大家进入Sprite Kit。学过cocos2d的朋友可能会学得比较快,其实很多东西都是相通的,有关cocos2d的东西就不多说。
如上图所示,这是每一帧会做的事情,更新每一帧的内容,然后是场景中的行为,再就是物理系统,最后通过SKView进行渲染。可以通过一个UIviewController,将其view object的class属性由UIView改为SKView,然后在上面做你想要渲染的东西,可以通过storyboard对其view进行修改,有了SKView之后就需要SKScene了,再场景中添加你要的游戏对象,这不难理解吧。Sprite Kit好像没有Layer的概念,可以直接在Scene上面直接画东西,SKSpriteNode便是你要在Scene上面呈现的精灵,另外添加文本为SKLabelNode,同样继承SKNode,建议大家去了解一下整一个的Node Tree。
大概的框架逻辑就是,在Sprite View上添加Sprite Scene,Sprite渲染在Scene上,Node Tree展示了所有可以出现在Scene上的东西,node可以执行action,Scene上有物理系统,由于目前相关资料比较少,官方文档都是英文,本人阅读能力有限,大概知道也就这些,在后续学习的过程中会加点补充,或者深入给大家介绍。
好了,有了一个大概了解之后,开始用例子了来学习Sprite Kit
首先iOS 7只能在Xcode5.0或者以上版本进行开发,Xcode5.0的运行环境为OS X 10.8以上,新建一个项目,在class prefix那里填上Sprite,平台选择iPhone,创建之后,第一步在项目中导入Sprite Kit Framwork,在storyboard中,展开Sprite View Controller,选中View,在右边的identity inspector面板里,将custom class改为SKView。目前好像没有SKView可以直接创建的,所以只能通过这种方法来创建SKView。
在SpriteViewController.h文件里添加语句:#import <SpriteKit/SpriteKit.h>
在viewDidLoad函数里对SKview做一些初始化操作
SKView *spriteView = (SKView *)self.view; spriteView.showsFPS = YES; spriteView.showsDrawCount = YES; spriteView.showsNodeCount = YES;
获取当前的SKView需要讲view强制转化为SKView,showFPS显示帧数,showsDrawCount显示当前绘画次数,showsNodeCount显示当前node的数量
创建一个新的类继承SKScene,命名为HelloScene,在SpriteViewController.m文件#import “HelloScene.h”
在viewWillAppear:animated函数里实现如下代码:
HelloScene *hello = [[HelloScene alloc]initWithSize:CGSizeMake(360, 480)]; SKView *spriteView = (SKView *)self.view; [spriteView presentScene:hello];
通过设置size初始化一个HelloScene,presentScene:可以理解为显示Scene,如果当前SKView有一个Scene也会被新的Scene替代。
如无意外,运行之后可以看到模拟器里一个空的黑色界面,在最下面一行显示 0 nodes 0 draws 60.0fps
接下来我们要在HelloScene里添加一些东西,在HelloScene.h里添加 @property BOOL contentCreated;
在.m文件里面添加如下代码:
- (self)didMoveToView: (SKView*) view { if (!self.contentCreated) { [self createSceneContents]; self.contentCreated = YES; } } - (void)createSceneContents { self.backgroundColor = [SKColor blueColor]; self.scaleMode = SKSceneScaleModeAspectFit; [self addChild: [self newHelloNode]]; } - (SKLabelNode*)newHelloNode { SKLabelNode *helloNode = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; helloNode.text = @"Hello, World!"; helloNode.fontSize = 24; helloNode.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); return helloNode; }
这里didMoveToView:函数在Scene被present到SKView后立即执行,我们可以在这里对Scene做一些初始化,设置背景颜色为蓝色,scaleMode为适应Scene大小,然后在Scene上添加一个SKLabelNode,在newHelloNode函数中,我们设置其字体样式,文本内容,字体大小,位置,这些应该不难理解。
允许一下,效果图如下:
接下来,我们再为文本添加一些动作,实现一下动画效果,还是在.m文件里,添加如下代码:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ SKNode *helloNode = [self childNodeWithName:@"helloNode"]; if (helloNode != nil) { helloNode.name = nil; SKAction *moveUp = [SKAction moveByX:0 y:100 duration:0.5]; SKAction *zoom = [SKAction scaleTo:2 duration:0.25]; SKAction *pause = [SKAction waitForDuration:0.5]; SKAction *fadeAway = [SKAction fadeOutWithDuration:0.25]; SKAction *remove = [SKAction removeFromParent]; SKAction *moveSequence = [SKAction sequence:@[moveUp, zoom, pause, fadeAway, remove]]; [helloNode runAction:moveSequence]; } }
这里重写了touchesBegan:withEvent函数,即点击屏幕便开始播放动画。定义一个动作,上面的代码写得很清楚,Sprite Kit自带的很多种,我解释一下上的各个动作吧,哦,这里说一下,可以通过name属性拿到具有相同name的node,它允许多个node具有同样的名字。第一个动作是上升100个单位,时间间隔为0.5,第二个动作是放大2倍,然后停0.5秒,接着fadeOut,最后一个是将labelNode从Scene里面移除,将这几个动作用一个队列连接起来,它便会一个接一个地播放下去,然后runAction就ok了。
运行,点击屏幕,动画开始执行,如无意外,整个HelloWorld会照着我们的动作而行动着,这时可以观察一下最下面一行nodes和draws的数量变化,动画执行完后我们发现,它停住,只剩下蓝色的Scene,好吧,现在我们要它完成后跳转到另一个Scene
来咯,新建一个类,同样继承SKScene,命名为SpaceshipScene,添加如下代码,对其进行初始化设置:
@interface SpaceshipScene () @property BOOL contentCreated; @end @implementation SpaceshipScene - (void)didMoveToView:(SKView *)view { if (!self.contentCreated) { [self createSceneContents]; self.contentCreated = YES; } } - (void)createSceneContents { self.backgroundColor = [SKColor blackColor]; self.scaleMode = SKSceneScaleModeAspectFit; }
判断是否创建,然后初始化,为了区分,我们把背景颜色设置为黑色,然后是Scene跳转的实现,在HelloScene.m中#import “SpaceshipScene.h”,在touchesBegan:withEvent函数里将runAction:函数更改为:
[helloNode runAction: moveSequence completion:^{ SKScene* spaceshipScene = [[SpaceshipScene alloc] initWithSize:self.size]; SKTransition *doors = [SKTransition doorsOpenVerticalWithDuration:0.5]; [self.view presentScene:spaceshipScene transition:doors]; }];
根据字面意思,不难知道,此函数作用为执行动作moveSequence后执行block中的内容,我们就是在这个block里面实现跳转,设置跳转的方式,SpriteKit提供好几种跳转方式,大家可以一一去试一下,这里用上下拉开Scene的方式,调用view的presentScene函数,此时我们添加一个跳转效果,所以调用presentScene:transition函数,将我们设置的transition赋值给它就搞定了。
运行,在文本动画结束后边会按我们设置的跳转方式跳转到黑色的SpaceshipScene,很简单吧,没错,就是这么简单。
接着我们再添加一些比较复杂的SKSpriteNode,让我们的场景不再空荡荡的
在SpaceshipScene.m里的createSceneContents函数里添加如下代码:
SKSpriteNode *spaceship = [self newSpaceship]; spaceship.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); [self addChild:spaceship];
实现newSpaceship函数:
- (SKSpriteNode *)newSpaceship { SKSpriteNode *hull = [[SKSpriteNode alloc] initWithColor:[SKColor grayColor] size:CGSizeMake(33,24)]; SKAction *hover = [SKAction sequence:@[ [SKAction waitForDuration:1.0], [SKAction moveByX:100 y:50.0 duration:1.0], [SKAction waitForDuration:1.0], [SKAction moveByX:-100.0 y:-50 duration:1.0]]]; [hull runAction: [SKAction repeatActionForever:hover]]; return hull; }
通过设置颜色和大小初始化一个SKSpriteNode,并为其添加动作,repeatActionForever:即永远重复的播放动画
这样的一个SKSpriteNode未免太简单了,我们再给添加两个子对象,这里简单说一些父子关系,对父对象的平移、放大、旋转等操作会连带子对象一起,而子对象自身的操作则不会影响父对象。
在newSpaceship函数里面,runAction的后面添加如下代码:
SKSpriteNode *light1 = [self newLight]; light1.position = CGPointMake(-28.0, 6.0); [hull addChild:light1]; SKSpriteNode *light2 = [self newLight]; light2.position = CGPointMake(28.0, 6.0); [hull addChild:light2];
接着实现newLight函数:
- (SKSpriteNode *)newLight { SKSpriteNode *light = [[SKSpriteNode alloc] initWithColor:[SKColor yellowColor] size:CGSizeMake(8,8)]; SKAction *blink = [SKAction sequence:@[ [SKAction fadeOutWithDuration:0.25], [SKAction fadeInWithDuration:0.25]]]; SKAction *blinkForever = [SKAction repeatActionForever:blink]; [light runAction: blinkForever]; return light; }
同样初始化设置颜色和大小,注意,light的position属性的参照物为其parent,即hull。这里我们为light添加了一个闪烁的动作,用fadeOut和fadeIn可以实现,也是永远重复执行。
这个时候运行一下程序,再执行到SpaceshipScene这里,会看到一个ship带着左右两个闪烁的光点在屏幕上来回运动。
再来点更好玩的,物理系统,为我们的游戏对象加上物理效果,come on
在newSpaceship函数添加代码:hull.physicsBody = [SKPhysicsBodybodyWithRectangleOfSize:hull.size];这样就为我们的ship添加了一个物理系统,运行程序执行到SpaceshipScene这里,奇怪的事情发生咯,我们的ship没按照我们的动画反而自己往下掉,掉出了屏幕可视范围外,做过2D游戏的应该知道的啦,这是重力影响的结果,我们只需再添加一行代码:hull.physicsBody.dynamic = NO;即不使用重力效果,这时再运行,发现又恢复正常了。
我们再添加一下下落的陨石,这时我们需要使用重力效果。还是在SpaceshipScene.m文件的createSceneContents函数里面,添加代码:
SKAction *makeRocks = [SKAction sequence: @[ [SKAction performSelector:@selector(addRock) onTarget:self], [SKAction waitForDuration:0.10 withRange:0.15] ]]; [self runAction: [SKAction repeatActionForever:makeRocks]];
接着实现addRock方法:
static inline CGFloat skRandf() { return rand() / (CGFloat) RAND_MAX; } static inline CGFloat skRand(CGFloat low, CGFloat high) { return skRandf() * (high - low) + low; } - (void) addRock { SKSpriteNode *rock = [[SKSpriteNode alloc] initWithColor:[SKColor brownColor] size:CGSizeMake(8,8)]; rock.position = CGPointMake(skRand(0, self.size.width), self.size.height-50); rock.name = @"rock"; rock.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:rock.size]; rock.physicsBody.usesPreciseCollisionDetection = YES; [self addChild:rock]; }
这里又有了一个新的动作函数,performSelector:onTarget:,在动作执行的时候便调用addRock函数,注意这里执行一个重复动作的是self即Scene执行的,两个内联函数是为了计算下落陨石的初始x坐标,使其随机从上边缘任意点下落,addRock方法中,设置陨石的颜色大小位置名字属性。然后添加物理系统,这里需要注意的是usesPreciseCollisionDetection属性,使用精确的碰撞检测,有经验的朋友应该知道,在两个相撞物体,当有其中一个速度过快时,普通碰撞检测无法检测到,速度快的物体将直接穿过另一个物体,或者承受物体足够大,在还没穿越的时候检测到碰撞也是可能的。当启用usesPreciseCollisionDetection属性后,便可精确检测出这些碰撞,在本例子中,陨石速度不算太快,所以设不设置都没有影响,最后别忘了将陨石添加为Scene的child
还有就是,在陨石掉出屏幕后要销毁陨石,不然陨石一直存在,越来越多,最终会使程序崩溃。在SpcaeshipScene.m文件里面重写didSimulatePhysics函数,这是一个每一帧都会调用的函数,模拟物理系统完成后执行,判断每个陨石的y坐标,超出屏幕便从父对象里移除。代码如下:
-(void)didSimulatePhysics { [self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop) { if (node.position.y < 0) [node removeFromParent]; }]; }
enumerateChildNodesWithName:usingBlock:函数可以取得所有具有name的nodes,这里取得node,并移除。
这是最终效果图:
这些都只是写皮毛的东西,相对来说比较简单,不过,还是挺好玩的,接下来会继续学习,然后陆续放上自己的学习笔记,最后是整个demo的源码
发表评论
-
【iOS-Cocos2d游戏开发之十四】音频/音效/视频播放(利用Cocos2D-iPhone-Extensions嵌入Cocos2d进行视频播放!)
2013-11-18 11:04 710李华明Himi 原创,转载务必在明显处注明: 转载自【黑米Ga ... -
MAC系统下COCOS2D-X(IPHONE-ANDROID)及IDE的开发环境搭建
2013-11-11 16:30 1231最近正在做移动多平台对应游戏框架的调查,因为之前业余时间一直使 ... -
CCCallFunc
2013-11-08 14:08 693猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网– ... -
绘制图形
2013-10-15 13:40 735转载:http://book.2cto.com/201304/ ... -
CocosBuilder各元素渲染完成后的回调函数
2013-10-13 18:00 1114在调用ccbi文件后很多时候需要做一次元素渲染完成后的回调函数 ... -
Retina屏幕的支持
2013-10-12 15:54 5311。 由于retina和普通屏像素相差2倍,所以需要一套高清图 ... -
ccTouchesBegan 中如何让获取的坐标是相对整个屏幕的坐标,而不是在当前view的坐标
2013-10-11 13:36 765ccTouchesBegan 中如何让获取的坐标是相对整个屏幕 ... -
关于内存管理的几个基本要点!!(例子)
2013-10-08 15:25 682首先:如果alloc一个对象就必须要释放代码 比如: Te ... -
Cocos2d与chipmunk的使用
2013-10-04 22:08 1296新建一个cocos2d-chipmunk项目 首先AppDel ... -
定位程序出错位置
2013-10-03 15:03 690在.m文件中加入 #ifdef _FOR_DEBUG_ -( ... -
多线程之NSThread、NSOperation、NSInvocationOperation
2013-10-01 21:46 754IOS中支持多线程操作,使用NSThread和NSInvoca ... -
简单的数据存储
2013-09-26 10:09 758// // ViewController.h // d ... -
TabView在底部的使用
2013-09-24 14:41 824通过UITabBarController去实现多页面切换效果 ... -
TabView的使用
2013-09-24 13:57 994多页面的tab使用,就是ActionBar。直接看例子 其实就 ... -
TableView分组Group写法
2013-09-22 17:05 831需要多实现方法 首先需要在xib的视图文件中修改TableVi ... -
TableView的使用
2013-09-22 16:19 708在界面上拖一个TableView控件在可视区域。定义一个Pro ... -
实现alert弹出框
2013-09-22 10:34 767首先需要先实现UIAlertViewDelegate协议,这样 ... -
Copy方法
2013-09-13 22:42 795NSArray NSMutableArray copy NSA ... -
NSObject 和 反射的使用
2013-09-13 15:50 983// // main.m // Refect // ... -
NSNull
2013-09-09 16:30 706NSNull是为了解决字典等各种类不能放null而用的,这个对 ...
相关推荐
spine-spritekit, 针对 iOS 7 SpriteKit的非官方书脊 2D 运行时 脊椎 spritekitUnofficial ( http://esotericsoftware.com )的非官方 iOS 7运行时运行时官方运行时在这里:http://esotericsoftware.com/spine-runti
对于熟悉苹果开发环境的开发者来说,Sprite Kit编程指南是一个不可或缺的学习资源。 需要注意的是,由于文档是通过OCR技术扫描转录的,因此在阅读过程中可能会遇到一些文字识别错误,这可能会导致理解上的困难。...
在iOS开发领域, SpriteKit 是苹果推出的一款强大的2D游戏引擎,特别适合用于构建轻量级到中等复杂度的游戏。随着iOS 7的发布,SpriteKit得到了显著的提升和优化,为开发者提供了更为丰富的功能和更流畅的性能。本...
简单的SpriteKit打飞机 利用SpriteKit写的一个简单的打飞机场景,可以发射子弹、移动飞机以及碰撞检测。 利用SpriteKit写的一个简单的打飞机场景,可以发射子弹、移动飞机以及碰撞检测。
这个“SpriteKit物理系统Demo”是开发者为了展示如何在SpriteKit环境中实现物理模拟而创建的一个实例。让我们深入探讨SpriteKit的物理系统以及它如何工作。 在SpriteKit中,物理世界是由`SKPhysicsWorld`对象管理的...
对于初学者而言,需要先了解SpriteKit的基本元素如场景(Scene)、节点(Node)、精灵(Sprite)等。Swift语言是苹果官方推荐的iOS开发语言,因其简洁的语法和强大的功能受到开发者青睐,本教程使用的是Swift 3版本...
通过学习这个"使用SpriteKit写的时钟型技能cd动画",你不仅可以掌握如何使用SpriteKit进行动画制作,还能了解到游戏开发中的技能冷却机制。这个知识点对于开发具有复杂交互和动画的游戏或应用非常有价值。
开始使用 SpriteKit 的演示。将著名的 Cocos2DSimpleGame 移植到 SpriteKit。 See my blog for more: SpriteKit快速入门和新时代iOS游戏开发指南 更多详情、使用方法,请下载后阅读README.md文件
通过“Sprite Kit demo”项目,你可以学习如何使用以上技术来创建一个完整的2D游戏。项目可能包含不同的场景文件(`.sks`),每个场景都有其特定的布局和游戏逻辑。源代码(`.swift`或`.m`文件)会展示如何初始化和...
本教程将深入探讨如何利用SpriteKit和Swift来创建一个2D太空射击游戏。 首先,SpriteKit提供了一个完整的图形引擎,包括精灵(Sprites)、物理引擎、动画和粒子系统等组件,这些都是构建游戏的基础。Swift作为Apple...
SpriteKit是苹果公司为iOS、macOS平台设计的一款强大的2D游戏开发框架,它提供了丰富的图形渲染、物理模拟、动画和交互功能,让开发者能够轻松创建高质量的2D游戏。本篇文章将深入探讨SpriteKit的基本概念、核心组件...
这个“iOS 7 Sprite Kit学习demo1”是一个非常适合初学者上手实践的例子,通过它,我们可以深入理解Sprite Kit的基本概念和关键功能。 首先,Sprite Kit的核心组件包括`SKScene`、`SKNode`、`SKEffectNode`、`...
IOS SpriteKit学习之微信打飞机
通过阅读和理解这些文件,你可以深入学习如何利用SpriteKit构建一个完整的2D游戏。 最后,为了提高游戏体验,我们还可以考虑以下优化: 1. 添加音效和背景音乐,增加沉浸感。 2. 设计不同级别的难度,增加游戏挑战...
mac os 和ios 游戏开发工具.在iOS 7中内置了一个新的Sprite Kit框架,该框架主要用来开发2D游戏。目前已经支持的内容包括:精灵、很酷的特效(例如视频、滤镜和遮罩),并且还集成了物理库等许多东西。
SpriteKit游戏开发教程,2D方向,示例易懂,适合所有选手
在Swift编程环境中, SpriteKit 是一个强大的2D游戏开发框架,专为构建iOS、macOS以及其他Apple平台上的游戏而设计。本教程将详细介绍如何利用SpriteKit来实现一款经典的2048游戏。2048是一款简单却令人上瘾的数字...
下面,我们将深入探讨Sprite Kit的一些核心概念和功能,帮助你更好地理解和应用这一框架。 #### 1. Sprite Kit与OpenGL的关系 尽管Sprite Kit提供了高级别的抽象接口,但它底层实际上依赖于OpenGL进行图形渲染。这...
通过这个开源项目,开发者可以学习如何利用 SpriteKit 的粒子发射器来创建独特的视觉元素,同时理解如何将 SpriteKit 的游戏机制应用于非游戏场景,如界面动画。这个项目不仅展示了 SpriteKit 强大的粒子效果,也...
基于SpriteKit的人造模拟手表面板示例适用于watchOS。.zip,SpriteKit-based faux analog watch face example for watchOS