以下语法来自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/