下面的语法来自cocos2d
-(void) setLevelScene:(Class)klass
{
[[CCDirector sharedDirector] replaceScene: [CCTransitionFade transitionWithDuration:1 scene:[klass scene]]];
}我想将上面的cocos2d代码更改为Cocos2dx,因为我知道COCOS2DX中没有类这样的类型。
如何更改代码,特别是类型或cocos2dx中的任何替代类型?
你能帮我修改上面的代码吗?
发布于 2013-09-07 07:43:18
C++没有像isKindOf或类“包含类名”这样的机制。如果要检查该对象是类的实例,则可以使用动态强制转换。
dynamic_cast< Class* >(object) <- -如果对象不是类的实例,则这一行将返回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函数中的类的信息。如果您的项目中有很多级别,那么好主意就是使用Factory方法模式。
发布于 2014-01-01 11:36:46
void className:: setLevelScene(className* klass)
{
CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1, klass));
}https://stackoverflow.com/questions/18670871
复制相似问题