我已将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];
答案 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,因此当您转换到新场景时会自动删除/释放背景。