0

そのため、テスト中のアプリの Skview 内に skscene をセットアップしました。こんな感じで背景色などを設定します。

    SKView *skBG = [[SKView alloc] initWithFrame:self.view.bounds];
    SKScene *scene = [SKScene sceneWithSize:self.view.bounds.size];

    // Set the scale mode to scale to fit the window
    scene.backgroundColor = [SKColor colorWithRed:0.12f green:0.2f blue:0.27f alpha:1.0f];
    scene.scaleMode = SKSceneScaleModeAspectFit;
    [skBG presentScene:scene];

    NSString *myParticlePath = [[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"];
    SKEmitterNode *snowParticle = [NSKeyedUnarchiver unarchiveObjectWithFile:myParticlePath];
    snowParticle.particlePosition = CGPointMake(160, 284);

    scene addChild:snowParticle];
    [self.view addSubview:skBG];

次に、すでに提示されているシーンで背景の背景色をランダムに変更したいと思います。5秒後に呼び出される標準タイマーを添付しました。その中で次のようなことを行います:

self.scene.backgroundColor = [SKColor colorWithRed:0.5f green:0.5f blue:0.5f alpha:1.0f];

でも更新しないの?「[skView presentScene:scene];」でシーンを表現してみました しかし、うまくいきません。

4

1 に答える 1

1

うーん、それほど多くはありませんが、実際に共有した内容から、実際には self.scene プロパティを表示していない可能性があります。あなたが持っているSKViewをセットアップするコードでは:

SKScene *scene = [SKScene sceneWithSize:self.view.bounds.size];

ただし、これは .scene プロパティと同じではありません (self.scene = scene;メソッド内のどこかで実行している場合を除きます)。少しの情報から、self.scene プロパティを表示していないか、新しいインスタントでそれを隠していると推測されます。これが実際に当てはまる場合は、得たものを変更するのと同じくらい簡単なはずです。

SKView *skBG = [[SKView alloc] initWithFrame:self.view.bounds];
_scene = [SKScene sceneWithSize:self.view.bounds.size]; 

// Set the scale mode to scale to fit the window
self.scene.backgroundColor = [SKColor colorWithRed:0.12f green:0.2f blue:0.27f alpha:1.0f];
self.scene.scaleMode = SKSceneScaleModeAspectFit;
[skBG presentScene:self.scene];

NSString *myParticlePath = [[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"];
SKEmitterNode *snowParticle = [NSKeyedUnarchiver unarchiveObjectWithFile:myParticlePath];
snowParticle.particlePosition = CGPointMake(160, 284);

self.scene addChild:snowParticle];
[self.view addSubview:skBG];
于 2014-02-02T10:28:29.117 に答える