在使用CCLabelTTF的时候如果字符串长度稍长一些,在Android平台上就会闪退,不知道有没有人遇到同样的问题?该如何解决比较好?
原因找到了:
cocos2d::CCSize CCImage::getStringSize(const char text, const char * pFontName, int nSize)
{
JniMethodInfo minfo;
if (! JniHelper::getStaticMethodInfo(minfo, “org/cocos2dx/lib/Cocos2dxBitmap”, “getFontSize”,
“(Ljava/lang/String;Ljava/lang/String;I)[I”))
{
CCLOG(“getStringSize %s %d: error to get methodInfo”, FILE, LINE);
return CCSizeMake(nSize, nSize);
}
jstring jmsg1 = minfo.env->NewStringUTF(text);
jstring jmsg2 = minfo.env->NewStringUTF(pFontName);
jint size=nSize;
jintArray array=(jintArray)minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID,jmsg1,jmsg2,size);
jsize len=minfo.env->GetArrayLength(array);
jint body = minfo.env->GetIntArrayElements(array, 0);
if (body==NULL) {
CCLOG(“body %s %d: error to get methodInfo”, FILE, LINE);
return CCSizeMake(nSize, nSize);
}
int width=body;
int height=body;
minfo.env->ReleaseIntArrayElements(array, body, 0);
minfo.env->DeleteLocalRef(jmsg1);
minfo.env->DeleteLocalRef(jmsg2);
minfo.env->DeleteLocalRef(array);
minfo.env->DeleteLocalRef(minfo.classID);//引擎中没有加这个一行代码导致的问题。
return CCSizeMake(width, height);
}
你这是什么版本的
=.=我也不知道这个是什么版本的?