我有一个UIView类型的主要视图。这个视图有两个skview的(左和右)在景观唯一的方向。所有的视图和场景都设置为黑色背景。
我从隐藏的两个滑雪场开始。主屏幕显示屏幕两侧的问题。如果答案不正确,我将场景设置为一个效果,然后启用该效果并取消对skview (左或右)的隐藏。效果显示了几秒钟之后,我用[self.leftView presentScene:nil];禁用了它,我对rightView也是这样做的。然后我再把视图藏起来。
问题是,当场景被显示时,在场景被适当地用黑色背景渲染之前,有一个白色的视图的短暂闪光灯。事实上,这就是为什么我一开始就把雪景藏起来的原因,就好像我没有,尽管我把它设置为黑色,但它们会以较轻的背景显示出来。
我怎样才能在没有浅色背景的闪光灯下显示这些场景呢?
一些有代表性的代码:
self.fireSceneLeft = [FireScene sceneWithSize:self.leftView.bounds.size];
self.fireSceneLeft.scaleMode = SKSceneScaleModeAspectFill;
self.fireSceneLeft.backgroundColor = [UIColor blackColor];
[self.leftView presentScene:self.fireSceneLeft];
[self.leftView setHidden:NO];至于场景效果本身:
@implementation FireScene
-(SKEmitterNode *)fireEffect
{
SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"FireEffect" ofType:@"sks"]];
emitter.position = CGPointMake(150,80);
emitter.name = @"fire";
emitter.targetNode = self.scene;
emitter.numParticlesToEmit = 2;
return emitter;
}
-(void)update:(CFTimeInterval)currentTime {
[self addChild:[self fireEffect]];
}
@end发布于 2014-05-07 00:08:05
我通过创造另一个简单的黑色场景来解决这个问题。而不是设置我想要移到零的场景,我只是在黑色的场景替代。一个没有任何东西的场景(空白的SKView)有一个灰色的颜色,这是我的问题的原因。通过启动应用程序的黑色场景,并使用它时,不应该显示的场景,我的问题解决了。这里的一个重要点也是暂停场景。即使是没有动作的黑色场景,如果不暂停,也会消耗掉CPU。我发现最适合暂停黑色场景的地方是场景控制器的以下方法:
-(void)update:(CFTimeInterval)currentTime {
[self addChild:[self blackEffect]];
[self.view setPaused:YES];}
这也是一个棘手的问题,因为其他地方的场景实际上暂停了旧场景。这是一个时间问题,因为即使你调用一个新场景,然后暂停,它也没有时间在暂停之前得到新场景。上述方法是我唯一能可靠地调用暂停并使其在正确的场景上生效的地方。
发布于 2014-05-06 06:16:05
在iOS上,不能同时拥有两个(或更多) SKView实例。虽然它在技术上和一见钟情上都能工作,但实际上是无法使用的,因为一个视图将支配另一个视图,而另一个视图几乎没有时间更新和呈现其内容以及接收触摸和其他事件。我怀疑短暂的闪光灯与此有关。
https://stackoverflow.com/questions/23486299
复制相似问题