Cocos2d-x编程中CCRemoveSelf与CCCallFunc系列函数不能一起使用

简介:

可能是“头晕”了,我在编码中随意写出了如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
     CCLabelTTF* lbl=CCLabelTTF::create( "Hi, you have succeeded in buying this Power-up!" "Arial" , 32);
     lbl->setColor(ccc3(255,0,0));
     lbl->setPosition(VisibleRect::center());
     ul2->addChild(lbl,99);
     CCActionInterval*  scaleto = CCScaleTo::create(2.0f, 2.5f);
     CCActionInterval*  fadeout = CCFadeOut::create(2.0f);
     CCLog( "********************************" );
     CCAction*  s = CCSequence::create(
         CCDelayTime::create(1),        
         scaleto,
         fadeout,
         CCRemoveSelf::create(),
         CCCallFunc::create( this , callfunc_selector(StoreScene::callbackForBuyOK)), 
         NULL);
     lbl->runAction(s);
     //...
void  StoreScene::callbackForBuyOK( CCObject* pSender )
{
     UIButton* btnBuy =  dynamic_cast <UIButton*>(ul2->getWidgetByName( "Button_Buy" ));
     btnBuy->setEnabled( false );
}

我的想法很简单,可能你也猜测出了,就是当玩家购买某道具结束后,出现一个动态文字提示。而且,借助于CCRemoveSelf实现添加到场景中文本标签的自动移除。并且,在移除结束后,执行一个简短代码。


但是,实际运行上述代码时出现如下运行时错误:

wKioL1PzFALT5TScAAFDrNX8iCA672.jpg


相信,上述错误你有所了解。搜索了一下网络,有朋友在
http://azykise.blog.163.com/blog/static/1730802442011616103252723/

处给出如下解释:

这可能是函数调用约定不一致或者参数传递出错。

函数调用约定主要约束了两件事:

1.参数传递顺序

2.调用堆栈由谁(调用函数或被调用函数)清理

常见的函数调用约定:stdcall cdecl fastcall thiscall naked call

__stdcall表示

1.参数从右向左压入堆栈

2.函数被调用者修改堆栈

3.函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸

        用depends就可以看到函数的导出名。


而我的代码运行时错误停留在了如下位置:

wKiom1PzE3-wk6MEAACXRy-DvnU666.jpg


总之吧,根据上述错误,可以大致判断出,错误在函数调用格式出了问题。结合上述图片位置和前面的代码,我大致判断出了如本文题目所示的结论,即CCRemoveSelf与CCCallFunc系列函数不能一起使用!


其实,进一步想来,上述两种Action也没有必要一起使用。于是,前面的代码可以修改为如下即可解决问题:

   

1
2
3
4
5
6
7
8
9
CCAction*  s = CCSequence::create(
         CCDelayTime::create(1),        
         scaleto,
         fadeout,
         CCRemoveSelf::create(),
         NULL);
     lbl->runAction(s);
     UIButton* btnBuy =  dynamic_cast <UIButton*>(ul2->getWidgetByName( "Button_Buy" ));
     btnBuy->setEnabled( false );

















本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/1542156,如需转载请自行联系原作者


相关文章
24Echarts - 折线图(Line Style and Item Style)
24Echarts - 折线图(Line Style and Item Style)
212 0
|
10月前
|
机器学习/深度学习 传感器 人工智能
《AI赋能星际探索:机器人如何开启宇宙新征程!》
人工智能(AI)正革新空间探索机器人技术,提升其在复杂宇宙环境中的操作能力。AI助力精准导航与路径规划,使机器人能自主分析环境、避开危险;实现复杂任务的自主决策,如设备维修和样本采集;高效处理海量数据,快速提取有价值信息;优化人机协作模式,增强宇航员与机器人之间的默契。这些进步大幅提高了空间探索的效率和安全性,为人类揭开宇宙奥秘提供了强有力的支持。
408 4
|
iOS开发 索引 MacOS
python文件处理-Excel自动处理(使用 openpyxl)
python文件处理-Excel自动处理(使用 openpyxl)
604 1
python文件处理-Excel自动处理(使用 openpyxl)
|
机器学习/深度学习 人工智能 搜索推荐
新商业模式创新下AIGC的发展
【1月更文挑战第13天】新商业模式创新下AIGC的发展
257 2
新商业模式创新下AIGC的发展
计算机网络——物理层-传输方式(串行传输、并行传输,同步传输、异步传输,单工、半双工和全双工通信)
计算机网络——物理层-传输方式(串行传输、并行传输,同步传输、异步传输,单工、半双工和全双工通信)
1104 0
|
Kubernetes 监控 JavaScript
重磅开源,Kubernetes 监控利器来了!
重磅开源,Kubernetes 监控利器来了!
|
数据安全/隐私保护 Python
Python操作ppt和pdf基础
Python操作ppt和pdf基础
624 0
Python操作ppt和pdf基础
|
存储 Kubernetes 监控
开源云原生平台对比 KubeSphere vs Rainbond
最近因为工作需要,需要找一个功能完善的云原生应用平台,经过自己筛选和朋友推荐,剩下 KubeSphere和Rainbond ,这两个产品都是基于 Kubernetes 之上构建的云原生应用平台,功能都非常强大,但产品定位和功能侧重不同,本文将介绍我在选型过程中从各维度对比两款产品的过程记录。
|
Java Maven
IDEA导入Maven模块未识别,包颜色不对(包显示灰色)
IDEA导入Maven模块未识别,包颜色不对(包显示灰色)
IDEA导入Maven模块未识别,包颜色不对(包显示灰色)