c++ - cocos2dx中的类类类型

标签 c++ iphone cocos2d-x translate

以下语法来自cocos2d

-(void) setLevelScene:(Class)klass
{
  [[CCDirector sharedDirector] replaceScene: [CCTransitionFade transitionWithDuration:1 scene:[klass scene]]];
}

我想把上面的cocos2d代码改成Cocos2dx,因为我知道COCOS2DX中没有Class之类的类型。

我如何更改代码,特别是 Class 类类型或 cocos2dx 中的任何替代类型?

你能帮我改一下上面的代码吗?

最佳答案

C++ 没有像 isKindOf 或类“包含类名”这样的机制。 如果您想检查该对象是某个类的实例,您可以使用动态转换。

dynamic_cast< Class* >(object) <- 如果对象不是 Class 的实例,这一行将返回 null

另一种方法是使用像 ClassName() 这样的虚方法; 你在每个类中覆盖它并返回一个带有 ClassName 的字符串,例如:

 std::string MainLayer::ClassName(){
     return "MainLayer";
}

编辑:

在你的例子中我会写这样的东西

void setLevel(CCScene* scene){
 CCDirector::sharedDirector->replaceScene(CCTransitionFade::create(1.0f, scene);
}

然后这样调用

 setLevel(MainLayer::scene());

在这种情况下,您不需要有关 setLevel 函数中类的任何信息。如果您的项目中有多个层次,那么使用工厂方法模式是个好主意。

关于c++ - cocos2dx中的类类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18670871/

相关文章:

c++ - 将多个字段合并为一个字段

iOS Rich 推送通知在某些设备中不显示图像

iphone - 为什么没有performSelectorOnMainThread : in NSObject Protocol?

android - cocos2dx 应用程序的 Assets 大小

c++ - 复变量函数的自动微分

c++ - 是否有一种完全符合标准的方法可以使编译器将文件的确切(二进制)内容粘贴到源文件中?

c++ - 使用公钥 X509 V3 (PKCS7) 使用 AES 128 模式 cbc 加密文件

ios - 如何将数字转换为口语等文本?

c++ - 我怎样才能 'reuse' cocos2d::action?

c++ - cocos2d 中的 setScale 特定时间 Xcode