我在制作单人纸牌游戏时遇到了一些问题。
我在剩余的牌组上工作,点击后,将显示剩余的牌,这样玩家可以在点击牌组时循环浏览它们。
问题本身:当您点击卡片代码时,会生成一个图片文件名,从2个不同的数组中获取参数。
点击卡片后第一次出现没有任何错误,但是当第二次尝试点击时出现错误:"无法读取属性' Taskai'未定义"。
代码:
$.widget("Game.RemainingDeck", {
options: {
remainingDeck: []
},
_create: function() {
var game = this;
game.flipACard();
},
flipACard: function() {
var i = 0;
var game = this;
$("#remDeck").click(function() {
var remainDeck = game.options.remainingDeck;
var remDeck = $('#remDeck');
var oppenedCard = $('#openCard');
var card = $('<div class=" card"></div> ');
var imageName = remainDeck[i].Taskai + '_of_' + remainDeck[i].Simbolis + '.png';
var imagePath = 'texture/' + imageName;
card.css('background-image', 'url("' + imagePath + '")');
if (i = game.options.remainingDeck.lenght) {
aler("kaladë prasideda ið naujo");
}
i++;
oppenedCard.append(card);
});
}
})
答案 0 :(得分:2)
i
需要是外部var,否则每次点击处理程序运行时都为0
。
此外,我认为点击处理程序不应附加在.flipcard()
中,否则每次运行flipCard()
时都会反复附加点击处理程序。尝试在.create_()
中附加点击处理程序。
$.widget("Game.RemainingDeck", {
options: {
remainingDeck: []
},
_create: function() {
var game = this;
var i = 0;
$("#remDeck").on('click', function() {
$('#openCard').append($('<div class=" card"></div>').css('background-image', 'url("texture/' + game.options.remainingDeck[i].Taskai + '_of_' + game.options.remainingDeck[i].Simbolis + '.png")'));
if(i === game.options.remainingDeck.length) {
alert("kaladë prasideda ið naujo");
}
i++;
});
this.flipACard();
},
flipACard: function() {
$("#remDeck").click();
}
})
大概你.pop()
(或.shift()
)卡在remainingDeck
的某个位置?你可以在翻转时这样做,在这种情况下i
计数器是不必要的。