附上
getJSONFishPath: function (Type) {
var self = this;
cc.loader.loadRes("fish_h5/path", function (err, text) {
var pathAll = text["path"],
randomGroup = [];
var randomGroupR = [],
randomGroupMax = 1;
for (let r = 0; r < pathAll.length; r++) {
randomGroupR[r] = pathAll[r]["randomGroup"];
if (randomGroupR[r] > randomGroupMax) {
randomGroupMax = parseInt(randomGroupR[r])
}
}
if (self.randomRoad == null || self.randomRoad == undefined) {
self.randomRoad = Math.ceil(cc.random0To1() * randomGroupMax)
} else {
var index = self.randomRoad;
var zRandomGroup = [];
for (let z = 1; z < randomGroupMax + 1; ++z) {
zRandomGroup.push(z);
}
zRandomGroup.splice(index, 1)
var afterSpliceRandomRoad = Math.floor(zRandomGroup.length * cc.random0To1())
self.randomRoad = zRandomGroup[afterSpliceRandomRoad]
}
var IDGroup = [];
for (var n = 0; n < pathAll.length; n++) {
if (pathAll[n]["type"] == Type && pathAll[n]["randomGroup"] == self.randomRoad) {
IDGroup.push(pathAll[n]["ID"]);
}
}
var OnlyOneID = Math.floor(cc.random0To1() * IDGroup.length);
var OkID = IDGroup[OnlyOneID]
for (var i = 0; i < pathAll.length; i++) {
if (pathAll[i]["ID"] == OkID) {
var Cparameter = pathAll[i]["parameter"];
var CcoordinateAll = Cparameter.split(";"),
XcoordinateValue = [],
Xcoordinate = [],
distance = [],
distanceAll = 0;
for (var j = 0; j < CcoordinateAll.length; j++) {
XcoordinateValue[j] = CcoordinateAll[j].split(",");
Xcoordinate[j] = cc.p(parseInt(XcoordinateValue[j][0]), parseInt(XcoordinateValue[j][1]))
if (j < CcoordinateAll.length && j > 0) {
distance.push(cc.pDistance(Xcoordinate[j - 1], Xcoordinate[j]))
distanceAll = distanceAll + cc.pDistance(Xcoordinate[j - 1], Xcoordinate[j])
}
}
self.node.setPosition(Xcoordinate[0])
var timeMin = pathAll[i]["timeMin"],
timeMax = pathAll[i]["timeMax"];
var bezierAllTime = parseInt(timeMin) + parseInt((timeMax - timeMin) * cc.random0To1());
var bezierLength = Math.floor(Xcoordinate.length / 2)
var beziercheck = bezierLength % 2,
bezierTime = null,
bezierGroup = [];
bezierGroup.length = bezierLength;
for (var o = 0; o < bezierLength; o++) {
var a = o * 2;
var b = o * 2 + 1;
if (o != (bezierLength - 1)) {
var c = o * 2 + 2
bezierTime = (distance[a] + distance[b]) / distanceAll * bezierAllTime
} else {
var c = o * 2 + 1 * beziercheck + 1;
bezierTime = (distance[a] + beziercheck * distance[a + beziercheck * 1]) / distanceAll * bezierAllTime
self.lastPosition = Xcoordinate[c]
}
bezierGroup[o] = cc.bezierTo(bezierTime, [Xcoordinate[a], Xcoordinate[b], Xcoordinate[c]])
}
var bezierSingle = bezierGroup[0]
if (bezierGroup.length > 1) {
self.ac = self.node.runAction(cc.sequence(bezierGroup));
} else {
self.ac = self.node.runAction(bezierSingle)
}
}
}
})
},