【SOS】1.6 Xcode JSB 报错

大佬们,江湖救急:
① 1.6版本,jsb-default 在使用了 convertToWorldSpaceAR 处报错

jsb: ERROR: File /Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/manual/cocos2d_specifics.cpp: Line: 2348, Function: **js_cocos2dx_CCNode_convertToWorldSpaceAR**
js_cocos2dx_CCNode_convertToWorldSpaceAR : Error processing arguments
JS Exception: js_cocos2dx_CCNode_convertToWorldSpaceAR : Error processing arguments, file: /Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/src/jsb_polyfill.js, lineno: 1

js 源文件

var position = this._playerNode.convertToWorldSpaceAR(this._playerNode.x, this._playerNode.y);
// 发送移动数据
var moveData = {
       type: 'move',
        attribute: 'player',
        message: {
             position: position,
             playerId: JSON.parse(cc.sys.localStorage.getItem('uuid'))
         }
      }
window.ws.send(JSON.stringify(moveData));

② 在使用了给新节点设置位置时 报错

jsb: ERROR: File /Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/manual/cocos2d_specifics.cpp: Line: 2158, Function: **js_cocos2dx_CCNode_setPosition**
Error processing arguments
JS Exception: Error processing arguments, file: /Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/src/jsb_polyfill.js, lineno: 1

Stack: [23]</x<.setPosition@/Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/src/jsb_polyfill.js:1:109444
require<.mapInit</<.playerJoin@/Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/src/project.js:1:36108
[83]</r.prototype.invoke@/Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/src/jsb_polyfill.js:1:259858
[84]</l.emit@/Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/src/jsb_polyfill.js:1:262543
require<.mapInit</<.start/ws.onmessage@/Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/build16/jsb-default/src/project.js:1:35924

js 源文件

const newNode = cc.instantiate(this.playerPrefab1);
newNode.position = playerArray[i].position;

这个函数应该传入cc.Vec2类型的参数。。。。。
你参数传错了吧。。。。

在web上没有报错

setPosition的错误,请参考 creator1.6.0 中cc.Vec2的方法在模拟器中报错,浏览器中正常

native和web下,引擎的实现会有一定的区别,所以web下没问题的,native下不一定也会没问题

意思就是,需要把你的[quote=“oodoobvideo, post:1, topic:50361”]
playerArray[i].position
[/quote]
这个外面用cc.v2包装一下,确保返回的是cc.Vec2类型的对象

在native下,playerArray[i].position这个返回的就是个普通的json对象

这句改成:this._playerNode.convertToWorldSpaceAR(cc.v2(this._playerNode.x, this._playerNode.y));

这句改成:newNode.position = cc.v2(playerArray[i].position);
再试试~~~

PS:有点坑爹是不是?嗯,jare大大在那个帖子里也是这样回的~~~~:11::11::11::11:

@eternaloil
大佬,准确的说还没好啊

Simulator: jsb: ERROR: File /Users/nantas/fireball-x/cxp/cocos/scripting/js-bindings/manual/cocos2d_specifics.cpp: Line: 2158, Function: js_cocos2dx_CCNode_setPosition
Simulator: Error processing arguments
Simulator: JS Exception: Error processing arguments, file: /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/Resources/src/jsb_polyfill.js, lineno: 6601
Simulator: Stack: [23]</Node<.setPosition@/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/Resources/src/jsb_polyfill.js:6601:17
// 我全局事件写的网络端通讯貌似也有问题?
Simulator: enterRoom@/Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/temp/quick-scripts/assets/Script/map/mapInit.js:198:32
Simulator: [83]</EventListeners.prototype.invoke@/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/Resources/src/jsb_polyfill.js:14804:33
Simulator: [84]</proto.emit@/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/Resources/src/jsb_polyfill.js:14954:68
Simulator: start/ws.onmessage@/Users/apple/workspace/OneDrive/cocos/starve_v0.2/starve/temp/quick-scripts/assets/Script/map/mapInit.js:175:13

你断点调试(或者cc.log输出)playerArray[i].position这个是不是你需要的x、y,可能是playerArray数组中某个数据不对

JSB vec2 的返回值问题我们后续会修复

你现在的问题是 enterRoom 这个函数在 mapInit 198 行修改 Position 的参数有问题

我以为 1.6 的报错信息加调用栈已经很清楚了才对。。。

谢谢潘大,新手才入坑:6:

最后找到问题竟然是坐标数据到服务端转了一圈广播出来之后变成字符串了。。。