几个问题

问题1:三消游戏消除方快,将数组中的清除这块还有些不理解?

解决方案:将三消游戏看了一遍,找出以下代码:

filterDelSame:function(arr1,arr2){
    var returnArr = arr1.concat(arr2)    //合并数组
    for(var i = 0 ;i<returnArr.length;i++){
        var nowPo = returnArr[i]
        for(var j = i+1 ;j<returnArr.length;j++){
            if(cc.pSameAs(returnArr[j],nowPo)){    //对于cc.pSameAs有些不理解
                returnArr.splice(j,1)      //裁剪数组中j元素
                j--                  // 上面删除了一个元素,下标需要减一
            }
        }
    }
    return  returnArr   //返回这个数组
},

问题2:如何提高一个函数的复用性?

解决方案:网上查阅资料:

代码复用,顾名思义就是对曾经编写过的代码的一部分甚至全部重新加以利用,从而构建新的程序。在谈及代码复用的时候,我们首先可以想到的是继承性。代码复用的原则是:

优先使用对象组合,而不是类继承

在js中,由于没有类的概念,因此实例的概念也就没多大意义,js中的对象是简单的键-值对,可以动态的创建和修改它们。

但在js中,我们可以使用构造函数和new操作符来实例化一个对象,这与其他使用类的编程语言在语法上有其相似之处。

例如:

var trigkit4 = new Person();

js在调用构造函数Person时似乎看起来是一个类,但其实际上仍然是一个函数,这让我们产生了一些假定在类的基础上的开发思路和继承模式,我们可以称之为“类式继承模式”。

传统的继承模式是需要class关键字的,我们假定以上的类式继承模式为现代继承模式,这是一种不需要以类的方式考虑的模式。

//感觉上面讲的比较抽象,对于有什么技巧可以来提高函数的复用性?

问题3:精灵和layer?

解决方案:自己查阅资料:这个关乎到js中层级的关系,一个layer层可以创建很多个精灵对象,而一个精灵对象只能对应一个layer层

问题4:回调函数?

解决方案:查阅资料:

回调就是一个函数调用过程,比如函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。

//递归也算是回调函数吧,我查阅的资料说回调应该尽量避免使用递归?

问题5:拼图游戏中的裁剪

解决方案:查阅资料

在我们的拼图游戏中使用了cc.rect,rect类可以创建矩形裁剪区

var imgWidth = bgSp.width/NUM       //取得一块儿宽
var imgHeight = bgSp.height/NUM    //取得一块儿高
cc.log(bgSp.width);

 for(var i = 0; i < NUM; i++){
        for(var j = 0; j < NUM; j++){
            var cellSp = new Cell("res/"+this._randompic+".png",  //加载需要裁剪的图片
                cc.rect(i*imgWidth,j*imgHeight,imgWidth,imgHeight), //将设置好的宽高进行裁剪
                cc.p(bgSp.x + i*imgWidth,  bgSp.y + (bgSp.height>>1)-j*imgHeight),
                this.checkAllCellReachTarget.bind(this)
        )
            cellSp.setPosition(760+Math.random()*8.,235+Math.random()*200)  //将裁剪好的碎片随机显示在一个范围内
            this._cellArr.push(cellSp)
            this._Panel.addChild(cellSp,0);
        }
    }
},


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值