三消游戏的理解(2)

来源:互联网 发布:虎牙直播app下载mac版 编辑:程序博客网 时间:2024/06/05 01:07

承接上次三消游戏的点击消除掉落。今天主要是说的是三消游戏的核心。点击检测周围相同的颜色块。然后将其消除。首先还是在点击消除的时候,也就是检测点击事件里面。点击开始函数里面的方法抛出一个自定义事件。抛出的对象就是当前点击的坐标。然后在APP.js里面接收自定义事件。代码如下:

cheskclose:function(event){        var data = event.getUserData();//获取点击的坐标        var arr = this.checkNeighbor(data)//给获得的坐标传给定义的方法体        var newArr = arr.slice()//对之前的方法深复制            for (var index in arr) {                var po = arr[index]                newArr = newArr.concat(this.checkNeighbor(po))            }        this.updataopyity(newArr)    },
checkNeighbor:function(touchIndex){        cc.log("开始检查",touchIndex.x,touchIndex.y)        var returnArr = []        var touchtype = this.spArr[touchIndex.x][touchIndex.y].type        var checkArr = [cc.p(-1,0),cc.p(1,0),cc.p(0,-1), cc.p(0,1)]        for(var index in checkArr){            var arrIndex = checkArr[index]            if(touchtype == this.checkCellColor(cc.pAdd(touchIndex,arrIndex))){                returnArr.push(cc.pAdd(touchIndex,arrIndex))            }        }        return  returnArr    },
updataopyity:function(arr){        for(var index in arr){            var sp = arr[index]            //this.spArr[sp.x][sp.y].opacity = 100            this.spArr[sp.x][sp.y].removeFromParent(true)        }    }

先是获取点击的坐标,然后给获得的点击坐标传给第二个方法体,其中第二个方法体中的在函数的开始就传入了一个点击的坐标,定义一个空的数组。并且将点击的图片的颜色保存在一个局部变量中,然后定义一个数组里面存的就是点击的图片上下左右的四个点。然后遍历这个数组。取得这四个点遍历的结果就是 如果上下左右四个点中有跟点击的图片颜色一样的图片就给这个图片存在刚刚定义的空数组中。并且在函数的最后 return 这个数组。所以在第一个自定义接收方法体,里面var arr = this.checkNeighbor(data)
里面就是存的是与点击图片相同的图片(也就是hi一个数组),然后先对这个数组进行遍历
取出里面与点击图片相同的图片。并且将新复制的图片与传过来的数组相加。相加一次就只能检测周围一个相同的块。相加两次就可以检测周围两个相同的块。
现在还存在一个问题。每次检测块的时候都会检测点击图片的上下左右。然后进行下一次检测的时候还是回检测上下左右。所以这样就回出现多次检测相同的图片。并且还没能实现下落效果。
未完待续。。。。。。。。。。。。

0 0