我创建了一个for循环来生成网格图。当我单击地图上的每个网格时,我得到网格的X和Y.当地图宽度大于地图长度时,一切都很好,但是当尝试创建长度大于的地图时,返回的x变为y,y变为x。问题在于创建地图时的第二个for循环,但我无法弄明白。
$(document).ready(function(){
$("#slide-right").on( "click", function(event){
event.stopImmediatePropagation
slide('right');
});
$("#slide-left").on( "click", function(event){
event.stopImmediatePropagation
slide('left');
});
});
function slide(direction){
if($("#slide_container").hasClass("animating")) {
return false;
}else{
$("#slide_container").addClass("animating");
}
var slider_width = $("#slide_container").width();
$( ".slide" ).each(function( index ) {
var elmnt_left = $(this).position().left;
//alert(this.id)
var val = 100 * elmnt_left / slider_width;
var percentage = 0;
// direction slide to left
if(direction == 'left'){
if(index == 0) {
if(val > -100)
percentage = val - 60;
}
else if(index == 1) {
if(val > -40)
percentage = val - 60;
}
else if(index == 2){
if(val > 20)
percentage = val - 60;
}
}else if (direction == 'right'){ // direction slide to right
if(index == 0) {
if(val < 20 )
percentage = val + 60;
}
else if(index == 1) {
if(val < 80)
percentage = val + 60;
}
else if(index == 2){
if(val < 140)
percentage = val + 60;
}
}
console.log()
if(percentage !== 0){
$( this ).animate({
left: percentage+'%'
}, 400, function() {
// Animation complete.
$("#slide_container").removeClass("animating");
});
}
});
};
地图看起来像这样:
答案 0 :(得分:1)
好吧,也许我并不了解你的期望,但我不认为你必须针对mapWidth
&lt; mapLength
。
此外,除了使用CPU资源之外,我没有得到你打算用嵌套循环做什么?
for(int j=0; j<i+1; j++){
x = j % mapLength;
}
当它离开时,您将始终拥有x
= i % mapLength
此外,正如flkes所说,为什么不使用嵌套循环?
for (int y=0; y < mapLength; y++) {
for(int x=0; x < mapWidth; x++){
GridPanel gb = new GridPanel(x, y);
list.add(gb);
mapPanel.add(gb);
}
}
答案 1 :(得分:1)
你可以尝试这段代码:
for (int i = 0; i < mapWidth * mapLength; i++) {
y = i / mapLength;
x = i % mapLength;
GridPanel gb = new GridPanel(x, y);
list.add(gb);
mapPanel.add(gb);
}