半年回顾(坑爹的一年实习期才过去一半)

  一转眼间,从当时暑假 7月15号离开家里到现在所在的公司已经近半年了。从一开始的只会一点点C++的皮毛到现在虽然还是一个大菜鸟,但是相当刚离开学校那稚嫩的时候至少能看到了一些长足的进步。

  现在从事的LUA,cocos2dx手游编程。说起来从一点都不会到现在的小有心得,不过还称不上上手,目前还处于写功能的阶段。苦于没有人领进门,靠着修BUG入门,自己看COCOS2D-X的源代码感觉有些吃力。找不到头绪的感觉,不知道从哪个文件先着手看。这也可能是因为C++基础太过薄弱的原因。请大大们指导下应该从哪里入手看更适合我这种初学者。后来觉得是自己的C++基础太过薄弱的原因,就自己从网上找了一些书来看,现在就在看C++ primer, 现在看的是第四版,因为第五版找不到中文版的,而且第四版的也有更详细的课后习题的解答,所以选择了第四版的。做为一个小白现在想学很多东西,cocos2d-x, windows编程,DX, 还想写好看的代码,听从一个好大哥的话去买了一本重构,但是一直没有开始看。但却不懂从哪里入手,所以都先扔在了一边,乖乖的在看primer。不过感觉学习的速度有些慢。

  汗,写完两段发现在自己逻辑好零乱的感觉。

  从这里开始写一些自己写LUA的体会。

  lua最开始写的时候感觉很方便。不需要分号, 不需要声明, 随用随写。 self, table是万能的。相比C++来说那么一点语法基本称不上语法。当然,这也是因为我是小白的原因。lua的精通者勿喷。lua作为一种语言也有他的独到之处,像一些元方法,这些因为我很少用到,所以只是了解了皮毛。

  (1)学习LUA最重要的是table类,在lua中几乎可以称为万能的。可以做为所有的类型。与元方法想配合,可以实现一个模拟的类。

  (2)在lua中曾经掉过一个小坑,在文件1(a)中调用文件2的函数,设置了一个文件2(b)的setData函数后设置了一个b.data,然后调用文件2(b)的exit()函数清除数据,结果发现在我在文件2中,把self.data置为nil清除这个数据后,这个数据竟然还是存在。不明所以,后来才知道,self.data  和 b.data 是不等价的,self只是模拟出来的this指针。我清除的self.data根本就是不存在的。

a.file                         

function a:setBData(_d)

  b:setData(_d)

end

----------------------------------------

b.file

function b:setData(_data)        

  self.data = _data

end

function b:exit()

  self.data = nil

end

  (3)不懂是不是我的代码写法有些问题,代码中充斥着各种全局变量。只要定义为self的变量都是全局的,必须手动去释放,在其它的文件也可以通过文件名.变量名(b.data)来读取。真心觉得这是lua的一个短板,缺少封装。

  (4) 用了一段时间的cocos2d-x,发现了其中的几个BUG。  coco的版本是2.1.2好像。具体记不大清了。 

      首先是menu的BUG,在创建menu的时候设置menu的优先级会程序会爆掉。至于这个问题的彻底的解决办法不懂,只知道要在下一帧设置,不马上设置优先级就好了。不知道怎么修改底层。

      原因是在创建menu的时候还没有注册他的handler时设置优先级调用了menu的handler,此时handler 为空,所以导致游戏爆端。

      第二个是tableView的问题, tableview中的cell只要没有完全移出可视区域,哪怕只有一点点就不会被清除,cell就还能响应你的点击,比如说cell上的menu,虽然看不到,但只要点击了就会响应。

      对于这个问题,目前还没有很好的解决办法,现在的针对性处理只是将上层的按钮优先级设的很高,但有时还是会出现点击被cell上的按钮吸收,以后上层按钮无响应的问题。如果大大们有什么更好的解决办法,请别客气,欢迎指导!嘿嘿。。。

  好了,写到这里,我这小白肚子里的墨水吐的差不多了。能看到这里说明大大们也是有心了。(能把零乱的一篇文章看完,真心不容易。)在这里还是再啰嗦一下,如果各位对于小白我的学习有什么更好的建议的话或者对cocos2d-x的源代码有什么适合我这类初学者的阅读顺序(比如先看哪些文件呀),请不吝赐教。在这里先谢过了^_^

posted @ 2014-01-12 22:57  wtu_sos  阅读(322)  评论(0编辑  收藏  举报