通过future函数循环和设置全局变量
Looping and setting global variables through a future function
我得到了这段代码,我似乎不能使工作。这似乎是一个范围问题,我想知道你是否有任何想法。
这段代码我认为是坏的。
click: function(layer) {
selectedR = r;
selectedC = c;
render();
},
问题是,当我点击图像,它执行的功能,但值为selectedR/selectedC总是被设置为8,8,这意味着它不是抓取变量值从r,c,直到函数被实际点击。你能想出一个方法让我完成这件事吗?我想知道我点击的物品的r c值。如果有帮助的话,我正在使用JQuery/JCanvas库。下面是上下文中的代码:
var selectedR;
var selectedC;
function drawPieces(){
for( var r = 0; r < 8; r++){
for(var c = 0; c < 8; c++){
var x = boardLeft + (c * tileWidth);
var y = boardTop + (r * tileHeight);
var piece = gameboard[r][c];
if(piece.pieceCode == ChessPieceEnum.EMPTY){
continue;
}
$("canvas").drawImage({
layer: true,
source: piece.pieceCode.normalImage,
x: x,
y: y,
cursor: "pointer",
click: function(layer) {
selectedR = r;
selectedC = c;
render();
},
fromCenter: false
});
piece.x = x;
piece.y = y;
}
}
}
因此,传递给click函数的层对象似乎是对其自身的引用。因此,只需将r/c添加到图层对象中,然后在匿名函数中访问它。
function drawPieces(){
for( var r = 0; r < 8; r++){
for(var c = 0; c < 8; c++){
var x = boardLeft + (c * tileWidth);
var y = boardTop + (r * tileHeight);
var piece = gameboard[r][c];
if(piece.pieceCode == ChessPieceEnum.EMPTY){
continue;
}
$("canvas").drawImage({
layer: true,
source: piece.pieceCode.normalImage,
x: x,
y: y,
r: r,
c: c,
cursor: "pointer",
click: function(layer){
onPieceClick(layer.r, layer.c);
},
fromCenter: false
});
piece.x = x;
piece.y = y;
}
}
}
function onPieceClick(r,c){
selectedR = r;
selectedC = c;
render();
}
相关文章:
- 在javascript函数中设置全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 使用eval()设置全局变量
- Ajax设置全局变量,但外部值消失
- 更新后,父视图未在 Electron 中的
上设置全局变量 - 为什么在定义回调/侦听器函数(异步消息传递,port.on)后没有立即设置全局变量
- 如何在不设置全局变量的情况下确定是否已调用函数
- 在函数内设置全局变量
- jQuery / JS设置全局变量,但卡在传递给AJAX自定义函数
- 在 jsdom 加载的脚本中设置全局变量
- 设置全局变量,但未获得预期结果
- 延迟调用 dojo widget 中的函数,直到设置全局变量
- 如何在Javascript中设置全局变量
- ngresource在成功响应中设置全局变量
- 如何在点击事件中设置全局变量
- 通过future函数循环和设置全局变量
- 尝试用javascript函数设置全局变量
- jQuery Ajax Post -无法使用回调函数设置全局变量
- jQuery load()函数不设置全局变量
- 设置全局变量并在jquery/javascript中访问它