本人是新人,今天刚学,到现在都没有理解node和label这些的关系,请教一下:
- 一个Prefab通过 instantiate 复制后得出了一个 Node,这个Prefab本来就是一个单独的Label,请问怎么设置他的string?比如下面这里的设置就不生效。
var lbl = cc.instantiate(this.wordPrefab);
lbl.string = this.input[i];
- 我在这个Prefab中加了脚本组件,脚本里面调用函数将自己传递了出去:
onTouchCancel: function (event) {
console.log('touch_cancel');
this.game.onLabelTouchOff(this);
},
外面的回调函数里面看,这个传过来的参数怎么又变成Label了,需要 label.node 才是node,之前复制的时候不是复制出 Node 来了么,怎么又变成 .node 才是Node了?
onLabelTouchOff: function (label) {
for (i = 0; i < this.boxs.length; i++) {
var box = this.boxs[i];
if ((box.x - label.node.x)*(box.x - label.node.x) + (box.y - label.node.y)*(box.y - label.node.y) <= this.nearDistance*this.nearDistance) {
// 挪到对应的box,检查位置是否正确
if (label.string == this.answer[i]) {
// 答案一样,设置过去
var x = this.calculatePositionX(i, this.input.length, this.chooseOffset);
label.node.setPosition(x, this.boxY, this.zLbl);
return;
}
}
}
// 没挪到位,或者答案错误,重置回去
var index = this.chooses.indexOf(label.node);
var x = this.calculatePositionX(index, this.input.length, this.chooseOffset);
label.node.setPosition(x, this.chooseY, this.zLbl);
}