关于游戏对象是继承自CCSprite还是引用CCSprite的思考,想来想去,还是面向对象的思想的区别。
2012-10-27 01:58
316 查看
游戏对象继承自CCSprite是很多游戏示例的写法,很多,但不是全部,毕竟谁也不想自找麻烦,去引用CCSprite让它负责游戏对象的输出但游戏对象此时往往不派生自CCNode(有人要泪奔!)了,那末继承自NSObject的游戏对象是要闹哪样?我想来想去,初步的答案是思路清晰,解耦(接口分离原则)和多态的方便。准备跟老师讨论这个问题,答案待定,不允许评论,以下只是个人想法,纯属个人观点.
引用CCsprite并继承自NSObject的游戏对象往往需要自己实现CCStandardTouchDelegate或者CCTargetedTouchDelegate。此外必须从CCTouchDispather注册和移除delegate、还要使用CCScheduler(这是一个没有说明文档的类!!好吧,英雄不问出处)。
1但是一个有着自己游戏数据逻辑的游戏对象是一个模型,它怎么能是一个精灵对象呢,不符合MVC原则。
2关于解耦:请问继承的弱点是什么?为什么C++的多继承被谨慎地使用?因为继承会让一个类变得过于繁杂,庞大。面对一个又能唱歌又能写论文又能编程又会美工又会技术又会销售又会修理机械的对象,我想不是这个对象逆天了,而是修改和使用这个类的人要升天了。所以要解耦,解耦让概念清晰,类之间分工明确,即便要实现协议和引用,那都是算对象通信,合情合理。
3多态的使用,有人要发问了,继承CCSprite一样可以多态啊,没错,但是,同一个对象明明我的游戏数据大部分没有改,只是带上了装备不一样,它弄了一个分身跟自己同屏出现,然后为了让别的玩家区分自己和分身,自己换了一顶帽子。这时你的程序在内存居然要把对象复制一遍,然后去实现多态。但这个对象仅仅是换了一顶帽子,这科学么?
如果这个游戏对象有多重影分身(难道我火影中毒?),那你的程序可能要崩溃了,因为你的对象是继承自CCSprite类的,要做区分,只能是重新copy,但是如果是引用的情况,则不是,我用CCSpriteNode和纹理图册把自己各个分身都画一下,对象数据只有一份,只是给自己画几十个精灵图像而已!这个差别随着这个对象的属性数据的庞大而愈加明显!!!!!
引用CCsprite并继承自NSObject的游戏对象往往需要自己实现CCStandardTouchDelegate或者CCTargetedTouchDelegate。此外必须从CCTouchDispather注册和移除delegate、还要使用CCScheduler(这是一个没有说明文档的类!!好吧,英雄不问出处)。
1但是一个有着自己游戏数据逻辑的游戏对象是一个模型,它怎么能是一个精灵对象呢,不符合MVC原则。
2关于解耦:请问继承的弱点是什么?为什么C++的多继承被谨慎地使用?因为继承会让一个类变得过于繁杂,庞大。面对一个又能唱歌又能写论文又能编程又会美工又会技术又会销售又会修理机械的对象,我想不是这个对象逆天了,而是修改和使用这个类的人要升天了。所以要解耦,解耦让概念清晰,类之间分工明确,即便要实现协议和引用,那都是算对象通信,合情合理。
3多态的使用,有人要发问了,继承CCSprite一样可以多态啊,没错,但是,同一个对象明明我的游戏数据大部分没有改,只是带上了装备不一样,它弄了一个分身跟自己同屏出现,然后为了让别的玩家区分自己和分身,自己换了一顶帽子。这时你的程序在内存居然要把对象复制一遍,然后去实现多态。但这个对象仅仅是换了一顶帽子,这科学么?
如果这个游戏对象有多重影分身(难道我火影中毒?),那你的程序可能要崩溃了,因为你的对象是继承自CCSprite类的,要做区分,只能是重新copy,但是如果是引用的情况,则不是,我用CCSpriteNode和纹理图册把自己各个分身都画一下,对象数据只有一份,只是给自己画几十个精灵图像而已!这个差别随着这个对象的属性数据的庞大而愈加明显!!!!!
相关文章推荐
- 连载:面向对象葵花宝典:思想、技巧与实践(4) - 面向对象是瑞士军刀还是一把锤子?
- 关于js中一个对象当做参数传递是按值传递还是按引用传递的个人看法
- 2010.8.16 关于函数参数是指针、还是引用的区别
- java类、对象、对象的引用以及面向过程和面向对象区别
- Silverlight游戏设计(Game Design):(五)面向对象的思想塑造游戏对象
- 关于面向对象思想中二维数组如何与对象映射思路的思考
- 连载:面向对象葵花宝典:思想、技巧与实践(4) - 面向对象是瑞士军刀还是一把锤子?
- 关于java中的引用传递还是值传递的一点思考
- Silverlight游戏设计(Game Design):(五)面向对象的思想塑造游戏对象
- java学习笔记5.23对象和面向对象的思考,继承和多态
- Silverlight游戏设计(Game Design):(五)面向对象的思想塑造游戏对象
- 关于Java对象作为参数传递是传值还是传引用的问题
- 由无名对象(临时对象)引发的关于“引用”的思考
- Silverlight游戏设计(Game Design):(五)面向对象的思想塑造游戏对象
- 关于面向对象和面向过程的程序设计思想的思考和理解
- 关于java中对象的循环引用问题(java编程思想)
- 在java中String,对象,Integer(包装类型的)关于引用传递还是值传递
- angularJS学习之路(七)---子控制器关于是引用机制还是复制机制的问题---原型继承
- (面向对象一)关于继承和组合的区别
- 面向对象葵花宝典:思想、技巧与实践(4) - 面向对象是瑞士军刀还是一把锤子?