乙個新手接觸手遊專案碰到的bug及解決過程彙總2

2021-06-28 12:11:04 字數 3371 閱讀 9120

建議:在寫**時需要有乙個硬性規範,即每乙個函式都有注釋表明函式功能和引數型別功能。每建乙個資料型別table or struct 都有注釋其代表的意義

bug在處理遮蔽字的時候不能用指令碼語言lua;應該用c++處理,

在這個版本的cocos2dx中

要在lua中呼叫c++裡自己寫的方法,需要先在c++中寫好方法,再在相應的pkg檔案中寫上方法的宣告,最後執行tolua批命令

在資料庫的表中新增字段,在c++管理類中,需要全域性搜尋所有用到的地方,做出相應的修改。否則在後期會浪費大量的時間調bug;

有次在結構體中新增了乙個vector型別資料;結果程式崩潰了,原因是在初始化這個結構體時,使用了memcpy這個只能對基本資料型別初始化的函式。

對於日常的工作而已,第一件事是更新服務端和客戶端,然後執行刷庫工具。

對於客戶端聊天的介面顯示問題:因為要根據聊天內容的長度確定控制項的長度和寬度,這個特性用textbox控制項難於實現。只好使用lable加textbox兩者混合使用來確定控制項的大小了。源**如下:

function addonemsg( name,content ) --這個函式要設定成全域性的,因為即時聊天時用到

local msglistbox = sctypecast:castnodetolistbox(get_node_by_list("2-4-5-11",wnd))--聊天記錄控制項

local namelabel = sclabel:labelwithstringfont("", default_font_name, f(14)) --名字

local pcontentlabel = sclabel:labelwithstringfont("", default_font_name, f(13)) --名字

if namelabel and pcontentlabel then

tolua.cast(namelabel, "scnode"):setanchorpoint(anchor_center)

tolua.cast(pcontentlabel, "scnode"):setanchorpoint(anchor_center)

namelabel:settext(name)

namelabel:setcolor(ccc4(96,56,19,255))

pcontentlabel:settext(content)

pcontentlabel:setcolor(ccc4(255,255,255,255))

endlocal pdragnode = scdragnode:node()

if pdragnode and namelabel and pcontentlabel then 

pdragnode:setanchorpoint(anchor_center)

pdragnode:setframevisibled(true)

pdragnode:setdragenabled(false)

local textbox = nil

local plbabelw = pcontentlabel:getcontentsize().width

local pmark = nil

if plbabelw > auto_w(176) then

textbox = sctext:textwithwidthfont(auto_w(176.0), default_font_name, f(13))

--tolua.cast(textbox, "scnode"):setanchorpoint(anchor_center)

textbox:addnormaltext(content,ccc4(255,255,255,255))

else

textbox = pcontentlabel

pmark = true

endlocal prow = (plbabelw - plbabelw%auto_w(176))/auto_w(176)+1

pdragnode:setcontentsize(ccsizemake(textbox:getcontentsize().width + auto_w(8),

pcontentlabel:getcontentsize().height*prow + auto_h(6)))

textbox:setcontentsize(ccsizemake(textbox:getcontentsize().width + auto_w(8),

pcontentlabel:getcontentsize().height*prow + auto_h(6)))

if pmark then

textbox:setposition(ccpointmake(pdragnode:getcontentsize().width/2 + auto_w(4),

pdragnode:getcontentsize().height/2 + auto_h(3)))

else

textbox:setposition(ccpointmake(auto_w(4),

pdragnode:getcontentsize().height - auto_h(3)))

endpdragnode:setposition(ccpointmake(pdragnode:getcontentsize().width/2,0))

pdragnode:addchild(textbox)

if name == bommainscene.objuserinfoattribute.name then

pdragnode:setframe9atlastype(enumtype9atlas106)

msglistbox:additem(namelabel,1) --這裡第二個引數為在列表框中顯示為向右靠齊

msglistbox:additem(pdragnode,1)

else

pdragnode:setframe9atlastype(enumtype9atlas114)

msglistbox:additem(namelabel) 

msglistbox:additem(pdragnode)

endmovedownward_friendmail = movedownward_friendmail + namelabel:getcontentsize().height + pdragnode:getcontentsize().height + 1

end--msglistbox:setselectitem(msglistbox:itemcount() - 1)

if movedownward_friendmail > 0 then

msglistbox:setoffset(auto_pos(0,movedownward_friendmail)) --這個函式是設定向下偏移量

end--msglistbox:setselectitem(-1)

end

乙個關於DropDownList的小bug

發現乙個奇怪的毛病 設定dropdownlist的item時我加了三個屬性值 工人 農民 知識份子 頁面瀏覽時下拉列表裡的三個變成了 農民 知識份子 農民 後來發現乙個規律,把哪個屬性值放到最上面的時候,瀏覽頁面時哪個屬性值就會消失,最後乙個反而會重複出現。除錯了好多次一直沒有解決。為什麼呢.sol...

乙個新手程式設計師的專案經驗

剛開始進入公司是在3 月份,做的乙份工作是 directfb 的移植,前後花了乙個月的時間。就是做這個專案的時候我知道了在學校和社會的不同了,很簡單的乙個例子。移植成功後,在跑測試用例的時候發現有幾個測試用例執行不成功。這要是在學校誰還會管他呢,但是在公司的做法是去看 找出為什麼會出現這個錯誤。di...

乙個新手程式設計師的專案經驗

剛開始進入公司是在3月份,做的乙份工作是directfb的移植,前後花了乙個月的時間。就是做這個專案的時候我知道了在學校和社會的不同了,很簡單的乙個例子。移植成功後,在跑測試用例的時候發現有幾個測試用例執行不成功。這要是在學校誰還會管他呢,但是在公司的做法是去看 找出為什麼會出現這個錯誤。direc...