cocos2dx中的类类类型

时间:2013-09-07 07:22:16

标签: c++ iphone cocos2d-x translate

以下语法来自cocos2d

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

我想将cocos2d代码更改为Cocos2dx,因为我知道在COCOS2DX中没有类型如Class。

如何更改代码,尤其是类类类型或cocos2dx中的任何替代类型?

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

2 个答案:

答案 0 :(得分:2)

C ++没有像isKindOf或类“包含类名”的机制。  如果要检查该对象是否为类的实例,则可以使用动态强制转换。

dynamic_cast< Class* >(object)&lt; - 如果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函数中有关类的任何信息。如果您的项目中有许多级别,那么使用工厂方法模式。

答案 1 :(得分:0)

void className:: setLevelScene(className* klass)
{
 CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1, klass));
}