转战cocos2dx-js 开发体会

转战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手游。

(分享内容较仅为个人理解,不足之处,请指出!)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值