码迷,mamicode.com
首页 > 其他好文 > 详细

【德州扑克开发记录】在lua层sdk接口类继承自cocos2d类的危害

时间:2016-04-11 13:55:35      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

之前给外包接微信、fb、gp、appstore等,lua调用的类是这么定义的:

local Platform_Appstore = class("Platform_Appstore",function()
  return display.newLayer()
end)

咋看一下是个很普通的用法,但却制造了2个非常难以调试的bug,给后来的工作带来了莫大的痛苦。

 

BUG1:ios真机调试,appstore支付后,乱点界面一通后,闪退,xcode报错卡在oc文件的touchbegan中。

这个bug的难点在于无法定位lua层出错的语句,只能根据oc报错确定为touch相关的报错。

原因:由于Platform_Appstore类是集成自CCObject的基类,付款的时候创建了一次,大概是由于(没有细查原因)付费完成后在某个时间点被自动回收了,造成touch混乱出错。

 

BUG2:外包接完sdk后,做了个Platform_Test类测试

     self:createButton("googleplay_pay",cc.p(display.cx, display.cy - 100), function()
local gp = Platform_GooglePlay.new()
gp:pay()
end)
-- local gp = Platform_GooglePlay.new()
-- gp:createMenu_Googleplay(self)
-- gp:addTo(self)

下面被注释的为外包原来写的测试,改为上面的代码应该是一样的,但却无法调用gp了。
原因:同样是由于Platform_GooglePlay集成自CCLayer,在创建了之后没有retain,于是在下一帧便被自动回收了。

解决:改成直接创建class。
local Platform_Appstore = class("Platform_Appstore")
 

【德州扑克开发记录】在lua层sdk接口类继承自cocos2d类的危害

标签:

原文地址:http://www.cnblogs.com/alphaGo/p/5377700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!