首先要把数据从策划表中读取出来,放入一个数组中,该数组为二维数组,相同组中的数据放到一起;
遍历该临时数组,在每个组中在用随机数进行抽取,抽取完之后在进行数据的填充;
一下是具体代码
var shopInfo = require ("用你自己的策划表数据"); //策划的表数据
cc.Class({
extends: cc.Component,
properties: {
managerGoodsPre: {
default: null,
type: cc.Prefab
}
},
onLoad() {
// cc.log(shopInfo.data);
this.extractData();
},
start() {
this.schedule(function() {
// 这里的 this 指向 component
this.refreshBtnState();
}, 10);
},
/**
* 在表中抽取出物品数据
*/
extractData: function () {
var _shopInfo = shopInfo.data;
var _tempArray = new Array();
for (var i = 0; i < _shopInfo.length; i++) {
if (_shopInfo[i].shop_type === 1) {
_tempArray.push(_shopInfo[i]);
}
}
this.dataPreprocessingInGroups(_tempArray);
},
/**
* 对表中数据预处理
* 方便在填充数据时的随机抽取
*/
dataPreprocessingInGroups: function (arg) {
var allGroupArray = new Array();
var tempData = arg;
var _group = tempData[tempData.length - 1].group;
// cc.log("all the group amount", _group);
//分别把每个组加入数组
for (var i = 1; i <= _group; i++) {
var _array = new Array();
for (let j = 0; j < tempData.length; j++) {
if (i == tempData[j].group) {
_array.push(tempData[j]);
};
}
allGroupArray.push(_array);
}
// cc.log("all Group Array", allGroupArray);
this.fillTheList(allGroupArray);
},
//用数据进行列表填充
fillTheList: function (dataArray) {
if (dataArray.length != 0) {
for (var i = 0; i < dataArray.length; i++) {
var tempArray = dataArray[i];
var _arrayLength = tempArray.length;
var randomIndex = Math.floor((Math.random() * _arrayLength));
// cc.log("random index", randomGroup);
// cc.log("slected group data", tempArray[randomGroup]);
let _managerMsg = managerInfo.get(tempArray[randomIndex].award_id);
let data = {
name : _managerMsg.name,
resId: _managerMsg.res_id,
price: tempArray[randomIndex].price,
priceAddCoef: tempArray[randomIndex].price_add_coef,
awardId: tempArray[randomIndex].award_id,
showState: tempArray[randomIndex].state
};
var goodsItem = cc.instantiate(this.managerGoodsPre);
goodsItem.getComponent("GoodsOfManagerItem").initData(data);
goodsItem.parent = this.node;
}
}
},
记录一下平时的一些东西,以后回头看看,也希望可以抛砖引玉,多学习先进的方法。