我有两个玩家,而且他们每个人都有各自的事件监听器,但行为不同。游戏在画布(ctx)上进行。用鼠标单击后,我想更改为其他播放器,以便将下一次单击注册为他。我将事件侦听器存储在单独的函数中,因此每当我单击时都调用它们。问题在于,其中只有一个在整个游戏中都能正常工作,因为该功能仅运行一次,因此计数器不会更新。这是基本代码:
HTML:
<button onclick="draw()">Push me</button>
脚本:
function draw()
{
drawBoard(250, 250, ctx, +size(),arr);
}
function drawBoard(x, y, ctx, m,arr)
{
ctx.clearRect(0,0,980,520);
var count = 0;
if(count % 2 !== 0) {
fPGMove(ctx, pX, pY, oX, oY, m, bo,arr);
count++;
} else if(count % 2 === 0) {
fPRMove(ctx, x, y, oX, oY, m, bo, arr);
count++;
}
}
function fPRMove(ctx, x, y, oX, oY, m, bo, arr)
{
canvas1.addEventListener('click', e => {
let moX = e.offsetX;
let moY = e.offsetY;
//do specific
});
}
function fPGMove(ctx, x, y, oX, oY, m, bo, arr)
{
canvas1.addEventListener('click', e => {
let mX = e.offsetX;
let mY = e.offsetY;
//do other specific
});
}
var count=0; //should be declared outside the function.
之所以出现这个问题,是因为每次调用该函数都会将计数值初始化为零,因此只有一个玩家在玩。请把计数变量声明移到函数外。