【问题标题】:Present Scene from a helper class来自助手类的当前场景
【发布时间】:2015-02-18 10:07:09
【问题描述】:

我正在开发一款具有游戏货币的 iOS 游戏。我有一个 SKSceneStore,它有一个 SKLabelNode 显示玩家的游戏内财富。当用户导航到 SKSceneStore(从保存的 NSUserDefaults 值)时,此标签的值被初始化。

为了让用户购买更多游戏内货币,我有一个辅助类 IAPHelper(来自 Ray Wenderlich 的教程:http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorialhttp://www.raywenderlich.com/23266/in-app-purchases-in-ios-6-tutorial-consumables-and-receipt-validation),它的方法之一是“provideContentForProductIdentifier:(NSString *)productIdentifier ”。这是交易成功后调用的方法,我将XXX游戏币添加到玩家的游戏财富中。

我的问题是我不确定如何使用用户的游戏内财富(在 SKSceneStore 中)“刷新”SKLabelNode。我怎样才能做到这一点?我想出的一个粗略的解决方案是,我可以使用以下代码重新加载整个 SKSceneStore:

SKSceneStore *reinitializeStore = [SKSceneStore alloc]init];
SKTransition *reveal = [SKTransition fadeWithDuration:0.5];
[reinitializeStore.view presentScene:reinitializeStore transition:reveal];

但是,此代码不起作用。

【问题讨论】:

  • 刷新是依赖于显示标签的类中发生的事件还是来自另一个类中的事件?
  • 刷新依赖于另一个类(不是显示标签的类)中的事件。

标签: ios objective-c variables sprite-kit storekit


【解决方案1】:

你不能把标签从场景中移除,用更新后的财富创建一个新标签,然后重新添加到场景中吗?

【讨论】:

  • 我的问题是我正在等待对发生在与显示标签的类不同的类中发生的事件的响应。我不知道使用什么代码来执行您从单独的类中描述的操作。
【解决方案2】:

我设法找到了一个更优雅的解决方案并使用了以下代码:

在“provideContentForProductIdentifier:(NSString *)productIdentifier”中

[[NSNotificationCenter defaultCenter] postNotificationName:@"reinitializeStore" object:self];

然后在我使用的 SKSceneStore 中

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(powerUpHUD) name:@"reinitializeStore" object:nil];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多