cocos2d-x学习之CCDictionary中的一个小问题

发布时间:2020-07-20 06:12:12 作者:googlingman
来源:网络 阅读:387

cocos2d-x学习之CCDictionary中的一个小问题


cocos2d-x开发中,数据操作自然是一个必须面对的问题。其中,这个引擎中内置了少数但是却非常高效率的DS,
例如CCString, CCArray, CCDictionary等。本文要记录的是CCDictionary使用过程的一个小问题。

问题描述:遍历一个字典。

开始时,我使用了如下想法:


CCArray* arrKey=m_pZombieDict->allKeys();

CCLog("CCArray.count:%d",arrKey->count());
CCObject* pObj = NULL;

CCARRAY_FOREACH(arrKey, pObj)
{
    CCInteger* pKey =(CCInteger*)pObj;
    if (pKey != NULL)
    {
        const CCString* pValue=m_pZombieDict->valueForKey(iTag);
       //...............others omitted



但是,实际调试中却发现直接调用allKeys()函数会导致失败,程序无法进行下去。我观看了一下 CCDictionary的源码,它也没有使用上述方案
遍历一个字典。对于allKeys()函数的调用不是如上方法。时间关系先不细致追究下去了。反正上述方案不行。通过CCDictionary的源码及头文件CCDictionary.h,
发现了如下常用的(引擎推荐说更高效)方案:


CCDICT_FOREACH(m_pZombieDict, pElement)
{
    int key = pElement->getIntKey();
    CCString* pSprite = (CCString*)pElement->getObject();
    // ......
}


有关使用上述遍历宏的使用细节,请参考头文件CCDictionary.h中的细致说明。总之,这些源码中提供了非常细致的一些重要结构及函数的使用例子,VERY GOOD!

感谢cocos2d-x的作者!


推荐阅读:
  1. Postgresql流复制切换的时候遇到的一个小问题
  2. 我的Shell学习笔记之Shell中的()

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

开发 记录 count

上一篇:PHP MySQL数据库一

下一篇:Android RatingBar 自定义样式

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》