const spawnGroup = require('spawnGroup'); const levelStates = require('LevelStates'); cc.Class({ extends: cc.Component, properties: { ABPrefab: cc.Prefab, ABLayer: cc.Node, initPipeX: 0, //-- 创建PipeGroup需要的时间 spawnInterval: 0, //当前要生成的地图数组 currentSpawnArray: [], //当前生成什么项目 currentSportsType: null, spawnIndex: 0, }, onLoad() { GlobalData.spawnManager = this; //获取地图js //GlobalData.levelManager = this.node.getComponent('LevelManager'); // this.LevelPool = new cc.NodePool(); }, start() { this.startSpawn(); }, startSpawn() { // this.schedule(this.spawnItem, this.spawnInterval); //新的项目从0开始 this.spawnIndex = 0; if (!GlobalData.levelManager.spawnSportsName) { if(GlobalData.levelManager.spawnSportsName==0){ this.SpawnSportsIndex = 1;//第一个项目,spawnSprint Enum ==1; this.SwitchSports(this.SpawnSportsIndex); this.spawnItem(); }else{ console.warn('GlobalData.levelManager.spawnSportsName 不存在!'); } return; } this.SwitchSports(GlobalData.levelManager.spawnSportsName); // console.log('当前动态数组', this.currentSpawnArray, GlobalData.levelManager.SprintSports.sportsName); if (this.currentSpawnArray.length == 0) { return; } this.spawnItem(); }, SwitchSports(name){ switch (name) { case levelStates.spawnSportsName.spawnSprint: this.currentSpawnArray = GlobalData.levelManager.SprintSports.itemPrefab; this.currentSportsType = GlobalData.levelManager.SprintSports.sportsName; break; case levelStates.spawnSportsName.spawnLongJump: this.currentSpawnArray = GlobalData.levelManager.LongJumpSports.itemPrefab; this.currentSportsType = GlobalData.levelManager.LongJumpSports.sportsName; break; case levelStates.spawnSportsName.spawnHurdle: this.currentSpawnArray = GlobalData.levelManager.HurdleSports.itemPrefab; this.currentSportsType = GlobalData.levelManager.HurdleSports.sportsName; break; case levelStates.spawnSportsName.spawnJavelin: this.currentSpawnArray = GlobalData.levelManager.JavelinSports.itemPrefab; this.currentSportsType = GlobalData.levelManager.JavelinSports.sportsName; break; case levelStates.spawnSportsName.spawnBike: this.currentSpawnArray = GlobalData.levelManager.BikeSports.itemPrefab; this.currentSportsType = GlobalData.levelManager.BikeSports.sportsName; break; } GlobalData.game.currentSpawnSport = this.currentSportsType; // console.log('当前生成项目的enum值:', GlobalData.game.currentSpawnSport); }, //-- 需要生成全部体育项目 SpawnAllSportsItem() { }, //-- 创建 spawnItem() { this.ABPrefab = this.currentSpawnArray[this.spawnIndex]; let spawnGroupTemp = null; // if (this.LevelPool.size) { // spawnGroupTemp = this.LevelPool.get(spawnGroup); // console.log('取出对象',spawnGroupTemp); // } else { spawnGroupTemp = cc.instantiate(this.ABPrefab).getComponent(spawnGroup); // console.log('重新生成对象',spawnGroupTemp); // } this.ABLayer.addChild(spawnGroupTemp.node); spawnGroupTemp.node.active = true; // spawnGroupTemp.node.x = this.initPipeX; spawnGroupTemp.node.setPosition(this.initPipeX, 0); // console.log(spawnGroupTemp.node.name); //如果是结束的预制 if (spawnGroupTemp.node.name == "FinishLine") { this.spawnIndex = 0; if(GlobalData.levelManager.spawnSportsName==0){ this.SpawnSportsIndex++; this.SwitchSports(this.SpawnSportsIndex); //如果存在,说明是初始化全部项目。最后一个项目,设置成1; // console.log(this.SpawnSportsIndex); if(this.SpawnSportsIndex == 5){ this.SpawnSportsIndex =0; } } } else { this.spawnIndex++; } }, despawnPipe(destroyObj) { // destroyObj.node.removeFromParent(); // destroyObj.node.active = false; // this.LevelPool.put(destroyObj.node); destroyObj.node.destroy(); this.spawnItem(); }, reset() { this.unschedule(this.spawnItem); } });