cocos2dx 3.15.1
合并过3.17里面的一些可能的修复代码:
ScriptingCore.cpp #define ENGINE_VERSION “Cocos2d-JS v3.15”//merged jsb leak & crash fix from 3.17
第一感觉是新代码导致的问题,我从应用商店下载3.15.1的版本的APP不会崩溃,新代码版本会崩溃。。。
XCODE Version10.1
经过测试发现真机和模拟器都会出现这个问题。真机难出来些,模拟器很容易就出来了。
以前貌似没有这么容易出错过。是因为升级了XCODE吗?有哪些地方不兼容?有相关经验的同学,告知一下吧?
报错位置:ScriptingCore.cpp > executeFunctionWithOwner > bRet = JS_CallFunctionValue(cx, obj, funcVal, args, retVal);
报错原因:Thread 1: EXC_BAD_ACCESS (code=1, address=0x42ad92df1f)
DEMO,不要什么DEMO,侦听一个touchmove触摸事件即可:
_self是一个Sprite.
_self._touchListenr = cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: _self.swallowTouches,
onTouchBegan: _self._onTouchesBegan,
onTouchMoved: _self._onTouchesMoved,
onTouchEnded: _self._onTouchesEnded,
onTouchCancelled: _self._onTouchesEnded
}, _self);
_onTouchesMoved: function (touch, event) {
trace(“m-------->1”)
if(cc.sys.isObjectValid(touch)==false){
trace("m-------->1.1")
return;
}
if(cc.sys.isObjectValid(event)==false){
trace("m-------->1.2")
return;
}
var _self = event.getCurrentTarget();
trace("m-------->2")
if (_self.ignoreTouchEvent) {
trace("m-------->2.1")
return false;
}
trace("m-------->3") //下面就打印不出来,然后报错了。
try{
var posX=touch.getLocationX();
trace("m-------->3.1")
var posY=touch.getLocationY();
trace("m-------->3.2")
var $pos = {
x:posX,
y: posY,
originEvent: event,
touch: touch
};
trace("m-------->3.3")
}catch (e) {
trace("m-------->3.4")
trace(e)
}
trace("m-------->4")
_self._onEventTrigger(TouchesManager.EVENT_TYPE_TOUCH_MOVE, $pos);
trace("m-------->5")
}