填 Cocos2dx 的 jsval_to_ccdictionary 坑

 在cocos2dx字典转换nactive的函数jsval_to_ccdictionary,只判断三个类型如果为空导致系统崩溃

以下是修改方法:找到函数底部

else if (JSVAL_IS_STRING(value)) {

            JSStringWrapper valueWapper(JSVAL_TO_STRING(value), cx);

            dict->setObject(String::create(valueWapper.get()), keyWrapper.get());

            //            CCLOG("iterate object: key = %s, value = %s", keyWrapper.get().c_str(), valueWapper.get().c_str());

        }

        else if (JSVAL_IS_NUMBER(value)) {

            double number = 0.0;

            JSBool ok = JS_ValueToNumber(cx, value, &number);

            if (ok) {

                dict->setObject(Double::create(number), keyWrapper.get());

                //                CCLOG("iterate object: key = %s, value = %lf", keyWrapper.get().c_str(), number);

            }

        }

        else if (JSVAL_IS_BOOLEAN(value)) {

            JSBool boolVal = JS_FALSE;

            JSBool ok = JS_ValueToBoolean(cx, value, &boolVal);

            if (ok) {

                dict->setObject(Bool::create(boolVal), keyWrapper.get());

                //                +CCLOG("iterate object: key = %s, value = %d", keyWrapper.get().c_str(), boolVal);

            }

        }else if (value.isNullOrUndefined())

        {

            // CCASSERT(false, "not isNull supported type");//value.isNullOrUndefined 这个需要判断,插入为空的值系统崩溃。

            dict->setObject(String::create(""), keyWrapper.get());

            

            

        }

        

        else   {

            CCASSERT(false, "not supported type");

        }


填 Cocos2dx 的 jsval_to_ccdictionary 坑,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。