cc.Class({ extends: cc.Component, properties: { Seed: { default: null, type: cc.Node, }, Exchange: { default: null, type: cc.Node, }, SeedBtn: { default: null, type: cc.Node, }, ExchangeBtn: { default: null, type: cc.Node, }, SelectedFrame: cc.Node, //Building40: cc.Node, ManageUI: cc.Node, //四个按钮对应的sprite Normal_Seed_Sprite: cc.SpriteFrame, Selecteded_Seed_Sprite: cc.SpriteFrame, Normal_Exchange_Sprite: cc.SpriteFrame, Selecteded_Exchange_Sprite: cc.SpriteFrame, //需要切换节点顺序的父节点 container: cc.Node, //商城的列表 mySeedList: [], seedPrefab: cc.Prefab, seedSpriteFrame: { default: [], type: [cc.SpriteFrame] }, seedNodeArry: { default: [], type: [cc.Node] }, snbAmount: 0, cntAmount: 0, ExchangePopView: { default: null, type: cc.Node, }, PayCNTPopView: { default: null, type: cc.Node, }, buySeedIndex: -1, snbAmountLabel: { default: [], type: [cc.Label] }, //拿到仓库列表的节点 buildingView: { default: null, type: cc.Node, }, myWareHouseSeedList: null, //轮询种子列表状态 AutoGetSeedsData: null, bottomLabel: { default: null, type: cc.Node, }, }, HiddenAll() { if (this.Seed.active) this.Seed.active = false; if (this.Exchange.active) this.Exchange.active = false; }, start() { //获取到仓库列表的脚本 this.buildingViewScript = this.buildingView.getComponent("BuildingView"); //默认设置第一个节点为 最上面 this.SeedBtn.setSiblingIndex(10); console.log('SNB=======', GlobalD.GameData.SNB) this.snbAmountLabel.string = GlobalD.GameData.SNB; //这里也初始化获取一个数据 GlobalD.GameData.getWarehouseSeedAndFruit((res, vaule) => { this.myWareHouseSeedList = vaule.data.seed; }); //获取种子和果实 GlobalD.GameData.getMallSeed((res, vaule) => { console.log('vaule111111111=', vaule) this.mySeedList = vaule.data; for (let i = 0; i < this.mySeedList.length; i++) { //没有种子数量不显示 todo 看看后续需不需要处理删除 if (this.mySeedList[i].amount < 1) continue; let _seed = cc.instantiate(this.seedPrefab); // _seed.getChildByName("buy_button").active = true; // _seed.getChildByName("Name").active = false; // _seed.getChildByName("Name").getChildByName("Num").getComponent(cc.Label).strng = '';//'x'+this.mySeedList[i].amount; this.seedNodeArry.push(_seed); _seed.parent = this.Seed; let _seedScript = _seed.getComponent("Content_Button"); //设置一个生成点 let _spawnScript = _seed.getComponent("Content_seed"); _spawnScript.myIndex = i; _spawnScript.SpawnPoint = cc.find("Canvas/SpawnParent/SpawnPoint"); _seedScript.NumLabel.string = this.mySeedList[i].amount; _seedScript.NameLabel.string = this.mySeedList[i].name; switch (this.mySeedList[i].picture) { case "Cabbage": _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[0]; break; case "Potato": _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[1]; break; case "Carrot": _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[2]; break; case "Broccoli": _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[3]; break; case "Tomato": _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[4]; break; case "Squash": _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[5]; break; case "Eggplant": _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[6]; break; case "Pepper": _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[7]; break; default: break; } } }); }, //切换建筑的面板 onSwitchBuildingContent(event, index) { this.SeedBtn.setScale(1); this.ExchangeBtn.setScale(1); this.SeedBtn.getComponent(cc.Sprite).spriteFrame = this.Normal_Seed_Sprite; this.ExchangeBtn.getComponent(cc.Sprite).spriteFrame = this.Normal_Exchange_Sprite; this.SeedBtn.setContentSize(100, 54); this.ExchangeBtn.setContentSize(100, 54); this.SeedBtn.y = -5; this.ExchangeBtn.y = -5; this.HiddenAll(); //面板设置index //种子 if ('0' == index) { this.SeedBtn.y = -20; this.SeedBtn.getComponent(cc.Sprite).spriteFrame = this.Selecteded_Seed_Sprite; this.Seed.active = true; if (this.seedNodeArry.length != 0) { this.SelectedFrame.parent = this.seedNodeArry[0]; } //if (this.mySeedList.length > 0) { // let Synopsis = "成熟期:" + this.mySeedList[0].maturity; // this.ManageUI.getComponent('ManageUI').onSetButtonInfo(this.mySeedList[0].name, this.mySeedList[0].priceSnb, Synopsis); //} this.SeedBtn.setSiblingIndex(10); this.SeedBtn.setContentSize(86, 88); this.bottomLabel.active = false; } //兑换 else if ('1' == index) { this.ExchangeBtn.y = -20; this.ExchangeBtn.getComponent(cc.Sprite).spriteFrame = this.Selecteded_Exchange_Sprite; this.Exchange.active = true; this.ExchangeBtn.setSiblingIndex(10); this.ExchangeBtn.setContentSize(86, 88); this.bottomLabel.active = true; } }, switch: function () { var children = this.container.children; var length = children.length; if (length > 1) { var src = Math.floor(Math.random() * length); var node = children[src]; var dst = src === length - 1 ? 0 : src + 1; node.setSiblingIndex(dst); } }, SNBExchangeToCNT() { GlobalD.GameData.onSnbToCnt(this.snbAmount, (data) => { this.ExchangePopView.active = false; console.log('data=', data) // console.log('res=', res) }); }, onPayCNTPopView(myIndex) { this.buySeedIndex = myIndex; this.PayCNTPopView.active = true; // console.log('this.mySeedList[this.buySeedIndex] =',this.mySeedList[this.buySeedIndex]) this.PayCNTPopView.getChildByName("BG").getChildByName("BG1_sprite_splash").getChildByName("NameLabel").getChildByName("label").getComponent(cc.Label).string = this.mySeedList[this.buySeedIndex].name; this.PayCNTPopView.getChildByName("BG").getChildByName("BG1_sprite_splash").getChildByName("PriceLabel").getChildByName("label").getComponent(cc.Label).string = this.mySeedList[this.buySeedIndex].priceCnt + ' CNT'; this.PayCNTPopView.getChildByName("BG").getChildByName("BG1_sprite_splash").getChildByName("MutureDurLabel").getChildByName("label").getComponent(cc.Label).string = this.mySeedList[this.buySeedIndex].maturity; }, PayCNT() { console.log('this.cntAmount=', this.cntAmount) console.log('this.cntAmount price=', this.cntAmount * parseInt(this.mySeedList[this.buySeedIndex].priceCnt)) //购买种子也要使用轮询 let currentAmount = 0; for (let i = 0; i < this.myWareHouseSeedList.length; i++) { if (this.myWareHouseSeedList[i].id == this.mySeedList[this.buySeedIndex].id) { currentAmount = this.myWareHouseSeedList[i].amount; } } //当前背包的数量 console.log("currentAmount:", { seedId: this.mySeedList[this.buySeedIndex].id, currentAmount: currentAmount //把当前背包的数据传进去 }); GlobalD.GameData.payCNT(this.cntAmount * parseInt(this.mySeedList[this.buySeedIndex].priceCnt), 4, this.mySeedList[this.buySeedIndex].id + "", (data) => { const [err, tx] = data; if (err === null) { // TODO 成功, 支付为链上操作,需要提供回调接口给这边服务端确认交易成功后修改购买订单结果 console.log(tx) // 交易hash,唯一标识符 //todo 种子 if (this.AutoGetSeedsData) { this.unschedule(this.AutoGetSeedsData); this.AutoGetSeedsData = null; } this.AutoGetSeedsData = () => { // getSeedCount ++; GlobalD.GameData.onGetSeedState( { seedId: this.mySeedList[this.buySeedIndex].id, currentAmount: currentAmount //把当前背包的数据传进去 }, (res, value) => { console.log("轮询种子:" + JSON.stringify(value)); if (0 === value.code) { this.unschedule(this.AutoGetSeedsData); console.log("轮询种子购买成功"); GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "种子购买成功!", 5); this.PayCNTPopView.active = false; //直接重新初始化一下列表, this.buildingViewScript.onUpdateList(); } }); }; this.schedule(this.AutoGetSeedsData, 5); } else { console.log(err) GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), err, 5); } }); }, //onEditDidBegan: function(editbox, customEventData) { // // 这里 editbox 是一个 cc.EditBox 对象 // // 这里的 customEventData 参数就等于你之前设置的 "foobar" //}, //// 假设这个回调是给 editingDidEnded 事件的 //onEditDidEnded: function(editbox, customEventData) { // // 这里 editbox 是一个 cc.EditBox 对象 // // 这里的 customEventData 参数就等于你之前设置的 "foobar" //}, //// 假设这个回调是给 textChanged 事件的 //onTextChanged: function(text, editbox, customEventData) { // // 这里的 text 表示 修改完后的 EditBox 的文本内容 // // 这里 editbox 是一个 cc.EditBox 对象 // // 这里的 customEventData 参数就等于你之前设置的 "foobar" // this.snbAmount = parseInt(text); //}, //// 假设这个回调是给 editingReturn 事件的 //onEditingReturn: function(editbox, customEventData) { // // 这里 editbox 是一个 cc.EditBox 对象 // // 这里的 customEventData 参数就等于你之前设置的 "foobar" //} // 假设这个回调是给 textChanged 事件的 onTextChanged1: function (text, editbox, customEventData) { // 这里的 text 表示 修改完后的 EditBox 的文本内容 // 这里 editbox 是一个 cc.EditBox 对象 // 这里的 customEventData 参数就等于你之前设置的 "foobar" this.cntAmount = parseInt(text); }, // 假设这个回调是给 textChanged 事件的 onTextChanged2: function (text, editbox, customEventData) { // 这里的 text 表示 修改完后的 EditBox 的文本内容 // 这里 editbox 是一个 cc.EditBox 对象 // 这里的 customEventData 参数就等于你之前设置的 "foobar" this.snbAmount = parseInt(text); }, });