父节点代码
cc.Class({
extends: cc.Component,
properties: {
playerPic: cc.Prefab,
nodeParent: cc.Node,
},
onLoad() {
this.startPosx = 0;
},
start() {
},
setStart(id) {
this.addEggs(id);
this.stopEggs();
},
onLoad() {
this.nodePos = this.node.getPosition();
this.node.on(cc.Node.EventType.TOUCH_START, this.onTouchStart, this);
this.node.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
this.node.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.onTouchCancel, this);
this.startPosx = this.node.x;
this.startPosx = this.node.y;
},
onTouchStart(event) {
var self = this;
var touches = event.getTouches();
self.StartPos = self.node.convertToNodeSpaceAR(touches[0].getStartLocation());
},
onTouchMove(event) {
var self = this;
var touches = event.getTouches();
var oldPos = self.node.convertToNodeSpaceAR(touches[0].getStartLocation());
var newPos = self.node.convertToNodeSpaceAR(touches[0].getLocation());
var subPos = oldPos.sub(newPos);
if (this.turnStart === false) {
for (let i = 0; i < this.mEggs.length; i++) {
this.mEggs[i].getComponent('playPos').setMoveNext(-subPos.x / 2000);
}
}
var top = 0;
for (let i = 0; i < this.mEggs.length; i++) {
if (this.mEggs[i].zIndex > this.mEggs[top].zIndex) {
top = i;
}
}
for (let i = 0; i < this.mEggs.length; i++) {
if (i != top) {
var color2 = new cc.Color(80, 80, 80);
this.mEggs[i].color = color2;
}
else {
var color2 = new cc.Color(255, 255, 255);
this.mEggs[i].color = color2;
}
}
},
onTouchEnd() {
this.turnStart = true;
var self = this;
},
onTouchCancel: function () {
this.nodePos = this.node.getPosition();
this.turnStart = true;
var self = this;
},
update(dt) {
if (this.turnStart) {
this.stopEggs();
}
},
setStartJurse(i, all) {
return all - i;
},
addEggs(id) {
this.nodeParent.removeAllChildren();
this.mEggs = [];
var count = 5;
const N = 360 / count;
for (let i = 0; i < count; i++) {
let egg = cc.instantiate(this.playerPic);
let js = egg.getComponent('playPos');
var Lid = i;
if (i === 0) {
Lid = (count - 1);
}
else {
Lid = i + (count) - 1;
if (Lid >= count) {
Lid = Lid - count;
}
}
egg.name = (Lid + 1) + "";
var Gname = id;
var url = "guanqiaPic/0" + id;
js.setPic(Gname, url);
js.setRadian(i * N * Math.PI / 180 - 1.55);
js.updatePos();
egg.parent = this.nodeParent;
this.mEggs.push(egg);
}
var top = 0;
for (let i = 0; i < this.mEggs.length; i++) {
if (this.mEggs[i].zIndex > this.mEggs[top].zIndex) {
top = i;
}
}
this.startPosx = this.mEggs[top].x;
for (let i = 0; i < this.mEggs.length; i++) {
if (i != top) {
var color2 = new cc.Color(80, 80, 80);
this.mEggs[i].color = color2;
}
else {
var color2 = new cc.Color(255, 255, 255);
this.mEggs[i].color = color2;
}
}
},
moveEggs() {
for (let i = 0; i < this.mEggs.length; i++) {
this.mEggs[i].getComponent('playPos').setMove(true);
}
},
stopEggs() {
var top = 0;
this.moveEggs();
for (let i = 0; i < this.mEggs.length; i++) {
if (this.mEggs[i].zIndex > this.mEggs[top].zIndex) {
top = i;
}
}
if (this.mEggs[top] && this.mEggs[top].x >= this.startPosx - 10 && this.mEggs[top].x <= this.startPosx + 10) {
cc.log("选择了" + this.mEggs[top].name);
this.stopMove();
this.mEggs[top].x = this.startPosx;
this.turnStart = false;
}
for (let i = 0; i < this.mEggs.length; i++) {
if (i != top) {
var color2 = new cc.Color(80, 80, 80);
this.mEggs[i].color = color2;
}
else {
var color2 = new cc.Color(255, 255, 255);
this.mEggs[i].color = color2;
}
}
},
stopMove() {
for (let i = 0; i < this.mEggs.length; i++) {
this.mEggs[i].getComponent('playPos').setMove(false);
}
},
});
cc.Class({
extends: cc.Component,
properties: {
radian: 0,
isMoving: false,
a: 300,
b: 50,
strL: cc.Label,
pic: cc.Sprite,
},
onLoad() {
this.node.on(cc.Node.EventType.TOUCH_START, event => {
event.stopPropagation();
});
},
start() {
this.toRight = true;
},
update(dt) {
if (this.isMoving) {
if (this.toRight) {
this.radian = this.radian + dt * 4;
} else {
this.radian = this.radian - dt * 4;
}
this.updatePos();
}
},
setPic(str, url) {
this.strL.string = str + "";
var self = this;
cc.loader.loadRes(url, cc.SpriteFrame, function (err, spriteFrame) {
if (!err) {
self.pic.getComponent(cc.Sprite).spriteFrame = spriteFrame;
}
else {
cc.log("加载出错! " + err);
}
});
},
setMove(isMoving) {
this.isMoving = isMoving;
},
setMoveNext(n) {
this.radian = this.radian + n;
if (n > 0) {
this.toRight = true;
}
else {
this.toRight = false;
}
this.updatePos();
},
setRadian(radian) {
this.radian = radian;
},
getRadian() {
return this.radian;
},
updatePos() {
this.node.x = this.a * Math.cos(this.radian);
this.node.y = this.b;
this.node.scale = 1 - Math.sin(this.radian) * 0.2;
this.node.zIndex = this.node.scale * 100;
},
});