ios - Obj C 调用 Cocos2dx C++ 非静态函数

标签 ios objective-c c in-app-purchase cocos2d-x

我正在为我的 cocos2dx 游戏在 iOS 中编写应用内购买代码。我想从 Obj C 调用我的 C++ 函数。我可以使用 *.mm 实现文件 Obj-C++ 调用 C++ 静态函数。但是我想在购买过程中更新用户界面。我尝试创建一个单例类,但 Obj-C 仍然无法识别单例对象的函数。

C++ : SceneAcc.cpp

void SceneAcc::stateChecker()
{
    if(BridgeObjCpp::sharedBridge()->isPurchasing == false)
   {
       this->unschedule(schedule_selector(SceneAcc::stateChecker));
       removeBuyCash();
   }
}

// There is an update scheduler to check if the purchase phase done

C++:BridgeObjCpp.mm

BridgeObjCpp* BridgeObjCpp::sharedBridge(){
    if (! s_bridge) {
        s_bridge = new BridgeObjCpp();
    }
    return s_bridge;
}

// Init singleton object
// And bool isPurchasing property in the header

IAPManager.m

- (void)completeTransaction:(SKPaymentTransaction *)transaction {
    NSLog(@"Complete Transaction...");

    // I want something like this
    BridgeObjCpp::sharedBridge()->isPurchase = true;

    [[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
    [[SKPaymentQueue defaultQueue]finishTransaction:transaction];

}

最佳答案

您需要修改 BridgeObjCpp.mm 或 IAPManager.m。

  • 在 BridgeObjCpp.mm 中添加静态方法来处理静态对象,并在 有效的 BridgeObjCpp.mm 将充当与 C++ 通信的包装器 方法。

BridgeObjCpp.h

@interface BridgeObjCpp : NSObject

+(void)setPurchasing:(BOOL)purchasing:

@end

BridgeObjCpp.mm

@implementation BridgeObjCpp

+(void)setPurchasing:(BOOL)purchasing {
  BridgeObjCpp::sharedBridge()->isPurchase = purchasing ;
}

@end

IAPManager.m

[BridgeObjCpp setPurchasing:YES];

  • 将 IAPManager.m 重命名为 IAPManager.mm 以使用 C++ 约定。

注意:在 .mm 文件中,编译器期望 Objective-C 和 C++ 代码的混合。在 .m 文件中,它只需要 Objective-C 代码。所以请分别编码。

关于ios - Obj C 调用 Cocos2dx C++ 非静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490188/

相关文章:

objective-c - 操作无法完成。 cocoa 错误 4

c - 如何将值放入 const char **?

android - 如何从我的 Flutter 应用程序控制网络缓存?

ios - View Controller Transition 动画 subview 位置

ios - 如何访问iOS模拟器相机

ios - xcode 无法识别@property,但它是正确的

ios - 找不到调整两个 View 大小的数学公式

c - 反转单链表

无法访问结构体中的结构体数组中的成员变量

iphone - 提醒 IOS 5 UITableView 外观和设计