将SpriteKit粒子添加到现有应用程序

时间:2014-08-04 22:16:54

标签: ios ipad

我已将SpriteKit粒子添加到我的应用程序中 - 已将skView添加到现有图像视图(myImageView)。一切正常,但skScenne无法设置为清晰颜色,以显示发射器后面的myImage。你可以改变颜色而不是清除颜色? `

    SKView *skView = [[SKView alloc] initWithFrame:CGRectMake(0.0, 0.0, 768, 1024)];

[myImageView addSubview:skView];

SKScene *skScene = [SKScene sceneWithSize:skView.frame.size];
skScene.scaleMode = SKSceneScaleModeAspectFill;
skScene.backgroundColor = [UIColor clearColor];


SKEmitterNode *emitter =  [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle          mainBundle] pathForResource:@"MyParticle" ofType:@"sks"]];

emitter.position = CGPointMake(400,0);

[skScene addChild:emitter];
[skView presentScene:skScene];


[self.view addSubview:myImageView];

2 个答案:

答案 0 :(得分:1)

不幸的是,你无法在iOS 7中使SKView透明。在iOS 8中,它可以使用:

skView.allowsTransparency = YES;
skScene.backgroundColor = [UIColor clearColor];

在iOS 7中,您可以添加一个与skView一样大的spriteView作为背景,并将myImage设置为纹理。

答案 1 :(得分:1)

出于性能原因,我建议您避免将SKScene的颜色设置为[UIColor clearColor](尽可能使用不透明视图)。相反,您可以创建一个SKSpriteNode并将其作为背景添加到您的场景中......

SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"image"];

background.size = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
// Bottom/left of your image
background.anchorPoint = CGPointZero;
background.position = CGPointZero;
// Make sure the background is behind other nodes in the scene
background.zPosition = -100;

[self addChild:background];

由于背景已添加到SKScene,因此当您转换到新场景时会自动删除/释放背景。