1.beta6.2,IOS闪退BUG,调用栈如下:
更新了最新v1.6.0-beta.6.2 出现如下问题
this.node.on(cc.Node.EventType.TOUCH_MOVE, (event: cc.Event.EventTouch): void => {
let endTouchPos: cc.Vec2 = this.node.convertToNodeSpaceAR(event.getLocation());
let moveVec2: cc.Vec2 = endTouchPos.sub(this._beginTouchPos);
// 省略代码
this._beginTouchPos = endTouchPos;
}, this.node);
为什么在web平台正常,可是在native平台会报
2017-08-08T08:14:10.050Z - normal: Simulator: JS Exception: endTouchPos.sub is not a function, file: /Users/Leo/Documents/C_Code/Leo/x81/temp/quick-scripts/assets/Script/View/AreaLayout.js, lineno: 81
2017-08-08T08:14:10.051Z - normal: Simulator:
2017-08-08T08:14:10.051Z - normal: Simulator: Stack: __define/AreaLayout</AreaLayout.prototype._onTouch/<@/Users/Leo/Documents/C_Code/Leo/x81/temp/quick-scripts/assets/Script/View/AreaLayout.js:81:28
2017-08-08T08:14:10.051Z - normal: Simulator: [83]</EventListeners.prototype.invoke@/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/Resources/src/jsb_polyfill.js:14804:33
2017-08-08T08:14:10.051Z - normal: Simulator: [84]</_doDispatchEvent@/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/Resources/src/jsb_polyfill.js:14862:25
2017-08-08T08:14:10.051Z - normal: Simulator: [84]</proto.dispatchEvent@/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/Resources/src/jsb_polyfill.js:14936:13
2017-08-08T08:14:10.052Z - normal: Simulator: [23]</_touchMoveHandler@/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/Resources/src/jsb_polyfill.js:5926:13
2017-08-08T08:14:10.102Z - normal: Simulator: JS Exception: endTouchPos.sub is not a function, file: /Users/Leo/Documents/C_Code/Leo/x81/temp/quick-scripts/assets/Script/View/AreaLayout.js, lineno: 81
2.beta6.2,安卓运行一段时间后,手机发热厉害,十分的烫手,大概跑三十分钟就会出现这样的情况,场景里只有UI,没有动画,没有特效。
新版的测了一下序列帧动画,感觉并没有明显 的提升,在手机上测试跟之前差不多,可能提升了5%左右吧,之前@panda说有个for in优化的问题,这是有优化过的?
我也是遇到这问题!!!
08-08 16:46:11.847: A/libc(12989): Fatal signal 11 (SIGSEGV) at 0x000000d8 (code=1), thread 13035 (Thread-11320)
08-08 16:46:11.955: I/DEBUG(192): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-08 16:46:11.955: I/DEBUG(192): Build fingerprint: ‘Xiaomi/pisces/pisces:4.4.4/KTU84P/V8.2.3.0.KXCCNDL:user/release-keys’
08-08 16:46:11.955: I/DEBUG(192): Revision: ‘0’
08-08 16:46:11.955: I/DEBUG(192): pid: 12989, tid: 13035, name: Thread-11320 >>> com.zenjoy.test <<<
08-08 16:46:11.955: I/DEBUG(192): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 000000d8
08-08 16:46:12.245: D/StatusBar.NetworkController(1108): onSignalStrengthsChanged received on slotId :0signalStrength=SignalStrength: 25 99 -120 -160 -120 -1 -1 99 2147483647 2147483647 2147483647 2147483647 2147483647 gsm|lte level=5 cdmdlevel=0 evdolevel=0
08-08 16:46:12.295: I/DEBUG(192): r0 779f8294 r1 00000000 r2 83933ad8 r3 00000000
08-08 16:46:12.295: I/DEBUG(192): r4 822f7388 r5 822f7388 r6 779f85d0 r7 75c319d8
08-08 16:46:12.296: I/DEBUG(192): r8 00000000 r9 822f7338 sl 77202090 fp 779f8254
08-08 16:46:12.296: I/DEBUG(192): ip 00000000 sp 779f8240 lr 75b87550 pc 75b873a8 cpsr 200d0010
08-08 16:46:12.296: I/DEBUG(192): d0 ffffff8c857071f0 d1 833ce76081f00030
08-08 16:46:12.296: I/DEBUG(192): d2 0000000000000000 d3 0000000100000002
08-08 16:46:12.297: I/DEBUG(192): d4 000000003f919125 d5 434a433e00000000
08-08 16:46:12.297: I/DEBUG(192): d6 3f919125434a433e d7 3ff0000000000000
08-08 16:46:12.297: I/DEBUG(192): d8 416fca0580000000 d9 416fca0555555555
08-08 16:46:12.298: I/DEBUG(192): d10 0000000000000000 d11 0000000000000000
08-08 16:46:12.298: I/DEBUG(192): d12 0000000000000000 d13 0000000000000000
08-08 16:46:12.298: I/DEBUG(192): d14 0000000000000000 d15 0000000000000000
08-08 16:46:12.298: I/DEBUG(192): d16 800000003ea63e91 d17 8000000080000000
08-08 16:46:12.298: I/DEBUG(192): d18 800000003ea63e91 d19 8000000080000000
08-08 16:46:12.298: I/DEBUG(192): d20 3f13cd3a80000000 d21 8000000080000000
08-08 16:46:12.307: I/DEBUG(192): d22 c1e22288c17e5a22 d23 bd4b7b4dc2438456
08-08 16:46:12.307: I/DEBUG(192): d24 41e510ef4180d316 d25 3d4e1e8842420d23
08-08 16:46:12.308: I/DEBUG(192): d26 3e4895003ea72240 d27 3a8536e036800000
08-08 16:46:12.308: I/DEBUG(192): d28 0000000000000000 d29 bf7fffffbf81a8c0
08-08 16:46:12.308: I/DEBUG(192): d30 c476625ec476625e d31 4475fac6447422bc
08-08 16:46:12.308: I/DEBUG(192): scr 20000013
08-08 16:46:12.309: I/DEBUG(192): backtrace:
08-08 16:46:12.309: I/DEBUG(192): #00 pc 007d03a8 /data/app-lib/com.zenjoy.test-1/libcocos2djs.so (JS::Rooted<JSString*>::rootLists(js::ContextFriendFields*)+24)
08-08 16:46:12.310: I/DEBUG(192): #01 pc 007d054c /data/app-lib/com.zenjoy.test-1/libcocos2djs.so (JS::Rooted<JSString*>::rootLists(JSContext*)+40)
08-08 16:46:12.310: I/DEBUG(192): #02 pc 007ce184 /data/app-lib/com.zenjoy.test-1/libcocos2djs.so (JS::Rooted<JSString*>::Rooted<JSContext*, JSString*>(JSContext* const&, JSString*&&)+72)
08-08 16:46:12.310: I/DEBUG(192): #03 pc 008182ac /data/app-lib/com.zenjoy.test-1/libcocos2djs.so (JSStringWrapper::set(JS::HandleJS::Value, JSContext*)+92)
08-08 16:46:12.310: I/DEBUG(192): stack:
08-08 16:46:12.310: I/DEBUG(192): 779f8200 00000000
08-08 16:46:12.310: I/DEBUG(192): 779f8204 ffffff82
08-08 16:46:12.311: I/DEBUG(192): 779f8208 849442a0
08-08 16:46:12.311: I/DEBUG(192): 779f820c ffffff8c
08-08 16:46:12.311: I/DEBUG(192): 779f8210 83310bf0
08-08 16:46:12.311: I/DEBUG(192): 779f8214 ffffff85
08-08 16:46:12.311: I/DEBUG(192): 779f8218 823b12f5
08-08 16:46:12.311: I/DEBUG(192): 779f821c 779f8258 [stack:13035]
08-08 16:46:12.311: I/DEBUG(192): 779f8220 83b821b0
08-08 16:46:12.311: I/DEBUG(192): 779f8224 840a34a4
08-08 16:46:12.312: I/DEBUG(192): 779f8228 00000000
08-08 16:46:12.312: I/DEBUG(192): 779f822c ffffff82
08-08 16:46:12.312: I/DEBUG(192): 779f8230 00000000
08-08 16:46:12.312: I/DEBUG(192): 779f8234 779f8328 [stack:13035]
08-08 16:46:12.312: I/DEBUG(192): 779f8238 e3a070ad
08-08 16:46:12.312: I/DEBUG(192): 779f823c ef9000ad
08-08 16:46:12.312: I/DEBUG(192): #00 779f8240 00000000
08-08 16:46:12.313: I/DEBUG(192): 779f8244 779f8294 [stack:13035]
08-08 16:46:12.313: I/DEBUG(192): 779f8248 8526b320
08-08 16:46:12.313: I/DEBUG(192): 779f824c 00000000
08-08 16:46:12.313: I/DEBUG(192): 779f8250 779f826c [stack:13035]
08-08 16:46:12.313: I/DEBUG(192): 779f8254 779f8264 [stack:13035]
08-08 16:46:12.313: I/DEBUG(192): #01 779f8258 00000000
08-08 16:46:12.313: I/DEBUG(192): 779f825c 779f8294 [stack:13035]
08-08 16:46:12.313: I/DEBUG(192): 779f8260 779f827c [stack:13035]
08-08 16:46:12.314: I/DEBUG(192): 779f8264 75b85188 /data/app-lib/com.zenjoy.test-1/libcocos2djs.so (ZN2JS6RootedIP8JSStringEC1IP9JSContextS2_EERKT_OT0+76)
08-08 16:46:12.314: I/DEBUG(192): #02 779f8268 779f827c [stack:13035]
08-08 16:46:12.314: I/DEBUG(192): 779f826c 779f8290 [stack:13035]
08-08 16:46:12.314: I/DEBUG(192): 779f8270 779f8284 [stack:13035]
08-08 16:46:12.315: I/DEBUG(192): 779f8274 779f8294 [stack:13035]
08-08 16:46:12.315: I/DEBUG(192): 779f8278 779f82a4 [stack:13035]
08-08 16:46:12.315: I/DEBUG(192): 779f827c 75bcf2b0 /data/app-lib/com.zenjoy.test-1/libcocos2djs.so (_ZN15JSStringWrapper3setEN2JS6HandleINS0_5ValueEEEP9JSContext+96)
v1.6.0.b6.2的版本在win7 64上模拟器依旧打不开,直接点击simulator.exe报’应用程序无法正常启动(0xc000007b)'的错误;用命令CocosCreator.exe做出的android版本在手机上依然黑屏没报错。
这是重启过程中崩溃,你的重启逻辑是什么样的?看起来你用的是 binary 模版,尝试一下 default 或者 link 模版可以获得更多信息
把你的代码改成
this.node.on(cc.Node.EventType.TOUCH_MOVE, (event: cc.Event.EventTouch): void => {
let endTouchPos: cc.Vec2 = cc.v2(this.node.convertToNodeSpaceAR(event.getLocation()));
let moveVec2: cc.Vec2 = endTouchPos.sub(this._beginTouchPos);
// 省略代码
this._beginTouchPos = endTouchPos;
}, this.node);
就可以了,native 部分函数返回的 position 是 {x: 0, y: 0} 形式的简单对象,所以不包含函数,主要是为了性能考虑
之前那个人的测试例是只有动画,并且几千个动画同时播,所以 for in 带来的性能问题被放大了,在真实游戏用例中一般没有那么明显的效果。
我求你们别再用 binary 模版来报 bug 了。。。神仙也看不懂这种崩溃堆栈啊。。。用 default / link 模版试试吧
好吧,我就是那个人,还是那么测,放大了感觉也就一点点提升,加上移动的话性能只有1/3
IPHONE 6S PLUS 1500个动画,同时移动,37FPS
一般来说,一个MMO,角色身上的动画包含, 角色本身,一个酷炫的武器,一个不断闪瞎眼的称号,3个动画
如果有坐骑的话就是4个,所以同屏移动是400-500个动画
如果是有战斗的,一个技能至少有1个特效吧?多的2-3个,还有什么全屏半屏的就不说了。
所以,我觉得这个并不是放大性能问题,而是做MMO真实存在的问题。
然后还有界面上的各种特效,像活动一直在闪的,这些量少就不说了,但做为一个酷炫的游戏,同屏可显示动画的多少直接影响到效果,还有像网络通讯的数据解析地图移动的性能损耗,都影响到动画可处理的时间,实际中加上这些元素后,同屏可能只有1/4或1/5的量
所以,测试最大可处理动画这并不是无意义的放大问题,这是区分能做大型游戏还是小游戏的分界
是default模板的,我还勾了调试模式!android报的崩溃堆栈是不是都差不多的。我用eclipse打的包没搞过远程调试
@cocowolf
你试试用 Android Studio 把。比 eclipse 好用太多了。
@errorfun
我理解你的测试意图,动画如果特别多的话,是需要一些特殊的优化,这个 @jjyinkailejj 看看有没有什么想法
1.6-beta6.2已经好了!!!
希望 1.6 增加查询设备型号的 API
项目实际测试下来 并没有性能提升,反而连1.5都不如 指的是界面的加载实例化的时间
c_string_to_jsval 在新版本中改为返回bool, 但是在传入字符串指针为NULL的情况会返回false, 与之前的逻辑不符, 导致一些spine的事件回调报错.
个人觉得是不是改成下面这样合理一些.
android手机qq运行web,调出手机下发的系统悬浮按钮,很大几率导致游戏画面完全卡住
闪退还是时有发生,并不比1.5.2稳定,引擎团队应该提升设计理念,比如cc.spawn传一个居然闪退,应该要求每一个api不管用户传什么参数进来都不闪退。


