首先要把數據從策劃表中讀取出來,放入一個數組中,該數組爲二維數組,相同組中的數據放到一起;
遍歷該臨時數組,在每個組中在用隨機數進行抽取,抽取完之後在進行數據的填充;
一下是具體代碼
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;
}
}
},
記錄一下平時的一些東西,以後回頭看看,也希望可以拋磚引玉,多學習先進的方法。