游戏开发中根据策划表中抽取不同组中的数据,然后在每个组中随机挑选一个显示

首先要把数据从策划表中读取出来,放入一个数组中,该数组为二维数组,相同组中的数据放到一起;

遍历该临时数组,在每个组中在用随机数进行抽取,抽取完之后在进行数据的填充;

一下是具体代码

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;

}

}

},

 

记录一下平时的一些东西,以后回头看看,也希望可以抛砖引玉,多学习先进的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值