在您的UIView
中創建一個SKScene
以添加SKEmitterNode
粒子效果。這樣做的
方式一:
1.In故事板(或編程,如果你喜歡)對現有的View的頂部添加視圖對象,並將其調整到您的需要。
2.Change類新的視圖來SKView
3.In您的視圖控制器的.h文件中創建爲SKView
屬性:
@property IBOutlet SKView *skView;
4.Link的SKView
你的故事板到skView財產。
5.創建一個新類,繼承SKScene
。 MyScene.h看起來像:下面
#import <SpriteKit/SpriteKit.h>
@interface MyScene : SKScene
@end
MyScene.m包含的代碼來創建一個粒子效果,隨時隨地的SKView感動。
#import "MyScene.h"
@implementation MyScene
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
/* Setup your scene here */
self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];
SKLabelNode *myLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
myLabel.text = @"Hello, World!";
myLabel.fontSize = 30;
myLabel.position = CGPointMake(CGRectGetMidX(self.frame),
CGRectGetMidY(self.frame));
[self addChild:myLabel];
}
return self;
}
//particle explosion - uses MyParticle.sks
- (SKEmitterNode *) newExplosion: (float)posX : (float) posy
{
SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"]];
emitter.position = CGPointMake(posX,posy);
emitter.name = @"explosion";
emitter.targetNode = self.scene;
emitter.numParticlesToEmit = 1000;
emitter.zPosition=2.0;
return emitter;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
//add effect at touch location
[self addChild:[self newExplosion:location.x : location.y]];
}
}
-(void)update:(CFTimeInterval)currentTime {
/* Called before each frame is rendered */
}
@end
6。在您的主視圖控制器,包括場景類:
#import "MyScene.h"
並將代碼添加到viewDidLoad中初始化的SKView:你的主要UIView
內
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the SKView
SKView * skView = _skView;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
}
你應該再有一個工作SKScene
。
我很高興聽到在我的應用程序中沒有SpriteKit的「整個軟件包」就可以實現這一點,正如我所說 - >我該如何將所述的粒子添加到普通視圖? O已經生成了'.sks'文件。 – vzm
嗯,是的,你必須鏈接SpriteKit.framework意思是「整個包」。這並不重要,因爲這個庫是內置在iOS中的,並不會增加應用程序的大小。儘管如此,爲了渲染粒子效果,您必須創建一個帶有SKScene的SKView並將粒子效果放在它上面。除非其他所有視圖都由Sprite Kit節點組成,否則所有其他視圖都在頂部或底部。 – LearnCocos2D
爲什麼不只是添加一個「部分透明的雨滴覆蓋」,並有一個[UIView animationXXX:]應用於它? – dklt