文章撰寫日期︰2013/11/22 16:19 cocos2dx使用版本︰v 2.1.5
一、問題
今天在使用CocosBuilder開發時,在安卓編譯執行程式後,遇到
@@@ ABORTING: INVALID HEAP ADDRESS IN dlfree addr=0x5c2db000
文章撰寫日期︰2013/11/22 16:19 cocos2dx使用版本︰v 2.1.5
文章撰寫日期︰2013/11/22 10:42 cocos2dx使用版本︰v 2.1.4
sys.localStorage.setItem("mykey","我是中文");
然後使用sys.localStorage.getItem("mykey");
欲取岀"我是中文"字串時,#include "ScriptingCore.h"
JSBool JSB_localStorageGetItem(JSContext *cx, uint32_t argc, jsval *vp) {
JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
jsval *argvp = JS_ARGV(cx,vp);
JSBool ok = JS_TRUE;
const char* arg0;
ok &= jsval_to_charptr( cx, *argvp++, &arg0 );
JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
const char* ret_val;
ret_val = localStorageGetItem((char*)arg0 );
// jsval ret_jsval = charptr_to_jsval( cx, ret_val);
jsval ret_jsval = c_string_to_jsval(cx, ret_val ? ret_val : "");//加入這行
JS_SET_RVAL(cx, vp, ret_jsval );
return JS_TRUE;
}
文章撰寫日期︰2013/09/20 14:29 cocos2dx使用版本︰v 3.0 alpha 0
cocosBuilder使用版本︰v3.0 alpha5
文章撰寫日期︰2013/08/28 11:48 cocos2dx使用版本︰v 2.1.4 cocosBuilder使用版本︰v 3.0 alpha 5
文章撰寫日期︰2013/08/21 11:38 cocos2dx使用版本︰v 2.1.4 cocosBuilder使用版本︰v 3.0 alpha 5
文章撰寫日期︰2013/08/08 17:51 cocos2dx使用版本︰v 2.0.4
cocosBuilder使用版本︰v 2.0 alpha 1
bool CCLayerColor::init()
{
CCSize s = CCDirector::sharedDirector()->getWinSize();
return initWithColor(ccc4(0,0,0,0), s.width, s.height);
}
需改成
bool CCLayerColor::init()
{
CCSize s = CCDirector::sharedDirector()->getWinSize();
return initWithColor(ccc4(0,0,0,255), s.width, s.height);
}
問題解決。
文章撰寫日期︰2013/04/14 16:00 文章修改時間︰2013/06/30 09:52 文章撰寫日期︰文章修改次數︰2 cocos2dx使用版本︰v 2.0.4
cocosBuilder使用版本︰v 2.0 alpha 1
//加入以下的code
else if (strcmp(pPropName, "visible") == 0)
{
bool visible = ((CCBValue*)pValue)->getBoolValue();
((CCSprite*)pNode)->setVisible(visible);
}
這是cocos2d-x 2.0.4版CCBAnimationManager.cpp->setAnimatedProperty函式最後的樣子
void CCBAnimationManager::setAnimatedProperty(const char *pPropName, CCNode *pNode, CCObject *pValue, float fTweenDuraion)
{
if (fTweenDuraion > 0)
{
// Create a fake keyframe to generate the action from
CCBKeyframe *kf1 = new CCBKeyframe();
kf1->autorelease();
kf1->setValue(pValue);
kf1->setTime(fTweenDuraion);
kf1->setEasingType(kCCBKeyframeEasingLinear);
// Animate
CCActionInterval *tweenAction = getAction(NULL, kf1, pPropName, pNode);
pNode->runAction(tweenAction);
}
else
{
// Just set the value
if (strcmp(pPropName, "position") == 0)
{
// Get position type
CCArray *array = (CCArray*)getBaseValue(pNode, pPropName);
int type = ((CCBValue*)array->objectAtIndex(2))->getIntValue();
// Get relative position
CCArray *value = (CCArray*)pValue;
float x = ((CCBValue*)value->objectAtIndex(0))->getFloatValue();
float y = ((CCBValue*)value->objectAtIndex(1))->getFloatValue();
pNode->setPosition(getAbsolutePosition(ccp(x,y), type, getContainerSize(pNode->getParent()), pPropName));
}
else if (strcmp(pPropName, "scale") == 0)
{
// Get scale type
CCArray *array = (CCArray*)getBaseValue(pNode, pPropName);
int type = ((CCBValue*)array->objectAtIndex(2))->getIntValue();
// Get relative scale
CCArray *value = (CCArray*)pValue;
float x = ((CCBValue*)value->objectAtIndex(0))->getFloatValue();
float y = ((CCBValue*)value->objectAtIndex(1))->getFloatValue();
setRelativeScale(pNode, x, y, type, pPropName);
}
else
{
// [node setValue:value forKey:name];
// TODO only handle rotation, opacity, displayFrame, color
if (strcmp(pPropName, "rotation") == 0)
{
float rotate = ((CCBValue*)pValue)->getFloatValue();
pNode->setRotation(rotate);
}
else if (strcmp(pPropName, "opacity") == 0)
{
int opacity = ((CCBValue*)pValue)->getByteValue();
(dynamic_cast(pNode))->setOpacity(opacity);
}
else if (strcmp(pPropName, "displayFrame") == 0)
{
((CCSprite*)pNode)->setDisplayFrame((CCSpriteFrame*)pValue);
}
else if (strcmp(pPropName, "color") == 0)
{
ccColor3BWapper *color = (ccColor3BWapper*)pValue;
((CCSprite*)pNode)->setColor(color->getColor());
}
//加入以下的code
else if (strcmp(pPropName, "visible") == 0)
{
bool visible = ((CCBValue*)pValue)->getBoolValue();
((CCSprite*)pNode)->setVisible(visible);
}
else
{
CCLog("unsupported property name is %s", pPropName);
CCAssert(false, "unsupported property now");
}
}
}
}
記得,文章撰寫日期︰2013/03/20 17:30 cocos2dx使用版本︰v 2.0.4 cocosBuilder使用版本︰v 2.0 alpha 1
void DoorAnimationScene::keyBackClicked(){
CCLog("into DoorAnimationScene::keyBackClicked()");
CCDirector::sharedDirector()->end();
}
文章撰寫日期︰2013/03/20 10:35 cocos2dx使用版本︰v 2.0.4
cocosBuilder使用版本︰v 2.0 alpha 1
![]() |
| 畫面在IOS上的樣子 |
![]() |
| 畫面在Android上的樣子 |
Bug #1610: fix a bug that CCLabelTTF will lost a character at the end of a line
解決方法是將cocos2d-x在Android上的一個類別
while (pString.indexOf(i++) == ' ') {
;
}
改成while (pString.indexOf(i) == ' ') {
++i;
}
記得,