
项目接近完成,感觉知道该学习哪些知识,但是实际应用中并没有用到,因为项目是分工合作,窥一斑而见全豹是不可能的。
前几天主程对我迟到很有意见,所以他看不到我晚上23:00走的,他也看不到公司其他项目组都是10:00左右才到公司的,而我每次因为堵车都迟到在10分钟以内,但要写请假申请表明我请了30分钟的假。
看看公司其他的项目组,看看自己项目组里每天上班聊QQ,看新闻,聊天的其他同事,我只能说,既然你那么在乎形式主义,那就满足你。
然后活动都分配出去,也没有分配我新的任务,哥正巴不得这么做。正好趁这段时间好好总结归纳一番。
昨天把客户端连接服务器的过程稿清楚,说的简单只不过3个步骤。
1.加载一个公司的logo动画,其实就是一个场景,用runscene就可以。
2.运行完动画的函数里回调显示更新资源的场景
3.在这个更新资源的场景里调用connect连接服务器
文件名 函数名 引用的函数名1.main.cpp _tWinMain Application::getInstance()->run()2.CCApplication-win32.cpp run() applicationDIDFinishLaunching()3.AppDelegate.cpp applicationDIDFinishLaunching()engine->executeScriptfile(文件名这里为 Matrix.lua) 这里追踪一下函数的实现发现最后是luaL_loadstring(“Matrix.lua”),这里只是把该文件载入内存,但并不执行,至此主要流程都转入Matrix.lua中4.Matrix.lua里有main函数,更有 local status,msg = xpcall(main,__G__TRACKBACK__)xpcall的使用是main函数不仅仅存在在内存中,而且开始运行起来,且有异常处理程序__G__TRACKBACK__,是一个打印函数这里给出原型为function __G__TRACKBACK__(msg) print("----------------------------------------") print("LUA ERROR: " .. tostring(msg) .. "/n") print(deBUG.traceback()) print("----------------------------------------") Log_Writefile("----------------------------------------") Log_Writefile("LUA ERROR: " .. tostring(msg) .. "\n") Log_Writefile(deBUG.traceback()) Log_Writefile("----------------------------------------") return msgend5.Matrix.lua main()StartScene_Start() -- 这里顺便提一句,为什么可以调用其他文件里的函数,因为在Matrix里包含了function StartScene_Start()StartScene.Scenen = cc.Scene:create()--tolua.cast(cocos2d.CCSceneEx:create(),"cc.Scene")StartScene_ShowLayer("logoGC")--StartScene_ShowLayer("MsgBox")local runScene = cc.Director:getInstance():getRunningScene()if runScene ~= nil thenif runScene ~= StartScene.Scenen thencc.Director:getInstance():replaceScene(StartScene.Scenen)endelsecc.Director:getInstance():runWithScene(StartScene.Scenen)end--StartScene_SetKeyPad(StartScene.Scenen)end6.StartScene.lua StartScene_Start()StartScene_ShowLayer("logoGC")function StartScene_ShowLayer(UIname)print("UIname = ",UIname)if type(UIname) == "string" thenlocal layer = _G[UIname .. "_Load"]()if layer ~= nil thenif layer:getParent() == nil and StartScene.Scenen ~= nil thenStartScene.Scenen:addChild(layer)end_G[UIname .. "_Show"]()endelseprint("error UIname type")endend7.StartScene.lua StartScene_ShowLayer("logoGC")_G[UIname .. "_Show"]()8.LogGC.lua logoGC_Show()logoGC.animation:setFrameEventCallFunc(logoGC_OnAnimationEvent)function logoGC_Show()if logoGC.mainLayer ~= nil thenlogoGC.csbNode:runAction(logoGC.animation)logoGC.animation:gotoFrameAndplay(0,100,false)logoGC.animation:setFrameEventCallFunc(logoGC_OnAnimationEvent)endendfunction logoGC_OnAnimationEvent(frame)if frame ~= nil and frame:getEvent() == "ended" then--NetUpdate.gameNetClIEnt:connectServer(VersionConfig.UpdateServer[1].Ip,VersionConfig.UpdateServer[1].Port)Update_SetData(Status.checkMD5)StartScene_ShowLayer("Update")endend9.StartScene.lua StartScene_Start()_G[UIname .. "_Load"]() and _G[UIname .. "_Show"]()-- UIname为Update10.Update.lua Update_Show() Update_SetShowStatus()function Update_Show()Update_SetShowStatus()endfunction Update_SetShowStatus()if Update.currState == Status.checkMD5 thenUpdate.panUpdateBg:setVisible(false)Update.panCheckResBg:setVisible(true)Update.panServerBg:setVisible(false)NetUpdate.gameNetClIEnt:connectServer(VersionConfig.UpdateServer[1].Ip,VersionConfig.UpdateServer[1].Port)elseif Update.currState == Status.download thenUpdate.panUpdateBg:setVisible(true)Update.panCheckResBg:setVisible(false)Update.panServerBg:setVisible(false)elseif Update.currState == Status.patch thenUpdate.panUpdateBg:setVisible(false)Update.panCheckResBg:setVisible(false) Update.panServerBg:setVisible(true)elseif Update.currState == Status.loadDate thenUpdate_PreLoadResources()endend由于前面已经设置过状态 Update_SetData(Status.checkMD5) 今日第一个分支 主要代码NetUpdate.gameNetClIEnt:connectServer(VersionConfig.UpdateServer[1].Ip,VersionConfig.UpdateServer[1].Port)至此,客户端请求连接服务器。 至于连上后检查版本,下载资源,解包,然后显示登录界面都是后续,这里就只是这么一个过程。把部分代码贴上,给自己留个纪念。 总结 以上是内存溢出为你收集整理的Cocos客户端如何连接服务器全部内容,希望文章能够帮你解决Cocos客户端如何连接服务器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)