【问题标题】:Class class type in cocos2dxcocos2dx中的类类类型
【发布时间】:2013-09-11 07:50:50
【问题描述】:

以下语法来自cocos2d

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

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

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

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

【问题讨论】:

    标签: c++ iphone cocos2d-x translate


    【解决方案1】:

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

    dynamic_cast< Class* >(object)

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

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

    编辑:

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

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

    然后这样打电话

     setLevel(MainLayer::scene());
    

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

    【讨论】:

    • 我还需要调用特定场景。我如何创建和调用“MainLayer”(在您的示例中)? (像 MainLayer* obj;)
    【解决方案2】:
    void className:: setLevelScene(className* klass)
    {
     CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1, klass));
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-06
      • 2023-03-13
      • 1970-01-01
      • 2016-06-10
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多