转战cocos2dx-js 开发体会之–面向对象
1、背景
iOS开发出身,中途带队转战cocos2dx-js 2D跨平台手游开发,得空整理下在一周内转战cocos2dx-js之中的一点体会。
2、代码
//父类
var Animal = cc.Class.extend({
name : null,
age : null,
ctor: function () {
this.tall = 2.0;
this.animalJump = function () {
cc.log("animal跳跳跳");
};
},
setkName : function (name) {
this.name = name;
},
getkName : function () {
return this.name;
},
setAge : function (age) {
this.age = age;
},
getAge : function () {
return this.age;
},
animalDescription: function () {
cc.log("我是动物的基类");
},
bark : function () {
cc.log("我是animal");
},
animalTall : function () {
cc.log(this.tall);
},
})
//猫
var Cat = Animal.extend({
ctor : function () {
this.setkName("dog");
},
bark: function () {
cc.log("喵喵喵");
},
catchMouse : function () {
cc.log("猫咪抓老鼠");
},
})
//狗
var Dog = Animal.extend({
ctor: function () {
},
bark : function () {
cc.log("汪汪汪");
},
})
注:ctor 为cocos2dx-js 中Class节点周期方法。
实例
var animal = new Animal();
var cat = new Cat();
var dog = new Dog();
1.封装性
animal.tall-->正常调用
animal.animalJump --> 正常调用
cat.tall-->报错
cat.animalJump-->报错
cat.name-->正常
cat.setkName-->正常
2、继承
cat和dog继承Animal原有的属性方法(均可正常访问调用,除上述Animal私有外)。同时Animal不能访问Cat特有catchMause方法,但Cat可以访问Animal共有方法。
3、多态
子类Cat、Dog重写bark方法,同样调用bark方法,输出不一样。
总结
cocos2dx 编码风格与oc迥异,前期为了尽可能理解js,同时也为了更好的编写代码,每次在设计功能时,会先考虑以上三点。面向对象这3大特性,对适应新的开发语言、编写更好的工程,启发良多。目前团队也已经稳定上架十余款2D手游。
(分享内容较仅为个人理解,不足之处,请指出!)。