在准备我正在javscript中制作的游戏的对象时,我正在读取一个JSON对象,deckData,并将每个作为this.discard的子项追加。我正在安排一个工作,检查this.deck是否为空。如果是,那么该函数应该将作为this.discard的子元素列出的卡片阵列洗牌,然后将它们指定为this.deck的子元素。
整个过程似乎运行得相当顺利,除了我尝试分配新洗牌数组的关键行:
this.deck.children_ = this.shuffle(this.discard.children_);
我正在寻找一种解决方案,它会成功地将所有作为this.discard的子元素的元素作为this.deck的子元素附加。我意识到我还没有从这个discard中清空阵列,但是一步一步。完整的代码片段如下:
sideboard = function(game) {
this.discard = new lime.Layer();
this.appendChild(this.discard);
for (var key in deckData) {
var cardData = deckData[key];
this.addCard(cardData);
};
this.mythosDeck = new lime.Layer();
this.appendChild(this.mythosDeck);
lime.scheduleManager.schedule(this.deckShuffler, this);
};
sideboard.prototype.deckShuffler = function() {
if (this.deck.children_.length < 1) {
this.deck.children_ = this.shuffle(this.discard.children_);
}
};
sideboard.prototype.shuffle = function(array) {
var tmp, current, top = array.length;
if(top) while(--top) {
current = Math.floor(Math.random() * (top + 1));
tmp = array[current];
array[current] = array[top];
array[top] = tmp;
}
return array;
};
答案 0 :(得分:2)
难道你不想只连接两个数组然后重新分配?例如:
this.deck.children_ = this.deck.children_.concat(this.shuffle(this.discard.children_));