首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cocos2dx中的类类型

cocos2dx中的类类型
EN

Stack Overflow用户
提问于 2013-09-07 07:22:15
回答 2查看 1.5K关注 0票数 0

下面的语法来自cocos2d

代码语言:javascript
复制
-(void) setLevelScene:(Class)klass
{
  [[CCDirector sharedDirector] replaceScene: [CCTransitionFade transitionWithDuration:1 scene:[klass scene]]];
}

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-07 07:43:18

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

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

另一种方法是使用像ClassName ()这样的虚拟方法;例如,在每个类中重写该方法并使用ClassName返回一个字符串:

代码语言:javascript
复制
 std::string MainLayer::ClassName(){
     return "MainLayer";
}

编辑:

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

代码语言:javascript
复制
void setLevel(CCScene* scene){
 CCDirector::sharedDirector->replaceScene(CCTransitionFade::create(1.0f, scene);
}

然后像这样打电话

代码语言:javascript
复制
 setLevel(MainLayer::scene());

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

票数 2
EN

Stack Overflow用户

发布于 2014-01-01 11:36:46

代码语言:javascript
复制
void className:: setLevelScene(className* klass)
{
 CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1, klass));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18670871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档