cocos2dx-20升级为cocos2dx-317后Static_cast from void TipView to cocos2dSEL_SCHEDULE aka void cocos2dReffloat is not allowed
在Cocos2d-x 2.0升级到Cocos2d-x 3.17后,您遇到了一个编译错误。错误信息显示您在将一个类型为 'void (TipView::*)()' 的成员函数指针转换为 'cocos2d::SEL_SCHEDULE' 类型时出错。在Cocos2d-x 3.x版本中,函数调度器的回调函数类型有所改变,因此需要进行适当的修改。
在Cocos2d-x 2.x版本中,函数调度器的回调函数类型为 'void (TipView::)()',而在Cocos2d-x 3.x版本中,函数调度器的回调函数类型为 'void (cocos2d::Ref::)(float)'。这是由于Cocos2d-x 3.x中的回调函数使用cocos2d::Ref作为基类,而不再直接使用具体的类。
要解决此错误,您需要进行以下修改:
-
将函数调度器的回调函数指针类型从 'cocos2d::SEL_SCHEDULE' 修改为 'cocos2d::SEL_SCHEDULE'。这将允许您将 TipView 的成员函数指针转换为正确的类型。
-
在回调函数中,您需要使用 'static_cast' 将 TipView 的成员函数指针转换为 'cocos2d::Ref' 的成员函数指针。例如:
void TipView::scheduleCallback(float dt) {
// 将 TipView 的成员函数指针转换为 'cocos2d::Ref' 的成员函数指针
auto callback = static_cast<cocos2d::SEL_SCHEDULE>(&TipView::yourMemberFunction);
// 使用回调函数进行调度
this->schedule(callback, dt);
}
void TipView::yourMemberFunction(float dt) {
// 在这里实现您的逻辑
}
通过以上修改,您应该能够成功编译并运行升级后的代码。请注意,这只是一个示例,您需要根据实际情况修改成员函数的名称和参数类型
原文地址: http://www.cveoy.top/t/topic/hWEL 著作权归作者所有。请勿转载和采集!