Cocos2d回调函数
Cocos2d callback function
我是cocos2d编程的新手,尽管我已经用C++编程了(17多年前),但很多变化都发生了,我正在努力学习基础知识。
我在游戏场景中有一个功能,我想暂停游戏,创建一个PauseScene实例和
void GameScene::pauseButtonCallback() {
Director::getInstance()->pause();
auto callbackResume = CallFunc::create([=](){
GameScene::resumeGame();
});
auto pauseScene = PauseScene::createSceneWithCloseCallback(callbackResume);
this->addChild(pauseScene, 5);
}
暂停场景.h
Scene* createSceneWithCloseCallback(CallFunc *callback);
不幸的是,我在调用PauseScene::createSceneWthCloseCallback(callbackResume)的行上遇到了一个错误,格式为:
"调用没有对象参数的非静态成员函数?"
这里的想法是,我会在实例化PauseScene时设置一个回调块,稍后当玩家点击恢复按钮时会调用该块。
此外,我知道PauseScene是GameScene的子代,我可以走捷径,只执行parent->function(),但我想用回调块来实现这一点。
如有任何帮助,我们将不胜感激。
我能够通过查看MenuItemImage::create的实现来实现我想要的。
我使用了ccMenuCallback,它被定义为typedef std::函数ccMenuCallback;
在我的暂停场景声明
ccMenuCallback resumeCallback;
virtual bool init();
CREATE_FUNC(PauseScene);
static PauseScene* createSceneWithCloseCallback(const ccMenuCallback& callback);
设置回调的create方法:
PauseScene* PauseScene::createSceneWithCloseCallback(const ccMenuCallback& callback) {
PauseScene *ret = new (std::nothrow) PauseScene();
if (ret && ret->init()) {
ret->autorelease();
ret->resumeCallback = callback;
return ret;
}
CC_SAFE_DELETE(ret);
return nullptr;
}
然后调用实际回调:
void PauseScene::resumeButtonCallback() {
this->removeFromParent();
this->resumeCallback(this);
}
相关文章:
- 以特征类型作为参数的泛型函数回调
- C# DllImport 调用非托管C++函数回调
- 为什么模板参数推导失败,std::函数回调的可变参数模板参数?
- std::包含 std::函数回调的多个包装器的向量不起作用
- 如何设置对类的私有函数的函数回调?
- 如何使用 c++11 函数回调声明多个模板参数
- sqlite3 更改函数回调参数 void* not用于 int* C++
- 如何知道 sqlite 中的函数"回调"是否返回了一些东西?
- Windows表单如何使用其他函数回调图表信息
- 如何在 c++ 结构中的 void* 变量中调用存储函数(回调)
- 将成员函数作为标准函数回调
- C++ 使用成员函数回调实现按钮
- std::函数回调,参数采用观察者模式(寄存器主题上的占位符)
- 使用可变参数模板从 Lua 函数回调 (C api) 中提取参数
- 在C++中使用派生类的静态方法作为函数回调
- 将libuv与函数结构一起使用,而不是函数回调
- 如何将函数回调传递给类成员
- c++类成员函数回调
- C++函数回调:无法从成员函数转换为函数签名
- 如何编写一个通用函数回调测试类