Javascript 在大网格上平滑滚动图像分幅?
长时间的听众,第一次打电话到这里 好的,我为这篇文章的篇幅感到抱歉,但我想非常清楚我正在尝试做什么,以及我试图引导你的答案 目标: 我正在尝试创建一个100 x 100的平铺网格(图像),我一次只显示部分网格,因为图像是240 x 120。通过单击按钮(注意:不需要鼠标滚动、缩放等),用户将水平和垂直滚动 作为一个类比,拿一个棋盘来说,它是用来玩的,而你正俯视着它。这将是非常简单的显示,只需要几个基本的图像,并把它们放在一个网格。现在,考虑一下,你只想显示板的底部1/3。然后,当用户向上单击时,他们会将视图移到中间,再次单击会将其移到板的顶部1/3。这是一个简单的例子,说明了除了在一个大得多的网格上和一个更小的视图/移动之外,我正在尝试完成的工作 我所尝试的:Javascript 在大网格上平滑滚动图像分幅?,javascript,jquery,css,google-maps,Javascript,Jquery,Css,Google Maps,长时间的听众,第一次打电话到这里 好的,我为这篇文章的篇幅感到抱歉,但我想非常清楚我正在尝试做什么,以及我试图引导你的答案 目标: 我正在尝试创建一个100 x 100的平铺网格(图像),我一次只显示部分网格,因为图像是240 x 120。通过单击按钮(注意:不需要鼠标滚动、缩放等),用户将水平和垂直滚动 作为一个类比,拿一个棋盘来说,它是用来玩的,而你正俯视着它。这将是非常简单的显示,只需要几个基本的图像,并把它们放在一个网格。现在,考虑一下,你只想显示板的底部1/3。然后,当用户向上单击时,
//绘制网格
//用Xcoord偏移leftStart和topStart
$leftStart=360-($xcoord*120);
$topStart=360-($xcoord*60);
//用Ycoord偏移leftStart和topStart
$leftStart+=($ycoord*120);
$topStart-=($ycoord*60);
对于($y=1;$y($ycoord-6))){
//把图片放出来-这就是我需要的格式
回显“\t\n”;
回显“\t\t”。$x.-“$y..gif\”>\n”;
回显“\t\n”;
}
$left=$left+120;
$top=$top+60;
}
$leftStart=$leftStart-120;
$topStart=$topStart+60;
}
用overflow:hidden在其周围抛出一个DIV,并给它一个ID(我的是#tileView)。好了,现在在视图中绘制了一个菱形网格,现在我们需要开始移动它
这就是我的jqu
//draw the grid
//Offset leftStart and topStart by Xcoord
$leftStart = 360 - ($xcoord * 120);
$topStart = 360 - ($xcoord * 60);
//Offset leftStart and topStart by Ycoord
$leftStart += ($ycoord * 120);
$topStart -= ($ycoord * 60);
for($y = 1; $y <= 99; $y++) { //y min to y max
$left = $leftStart;
$top = $topStart;
for($x = 1; $x <= 99; $x++) { //x min to x max
//I only want to draw part of the square
if(($x < ($xcoord + 6) && $x > ($xcoord - 6)) && ($y < ($ycoord + 6) && $y > ($ycoord - 6))) {
//Put out the image - this is how i needed mine formated
echo "\t<div class=\"move\" id=\"T" . $x . "_" . $y . "\" style='position:absolute; left:" . $left . "px; top:" . $top . "px;'>\n";
echo "\t\t<img src=\"./<path to your image>" . $x . "-" . $y . ".gif\">\n";
echo "\t</div>\n";
}
$left = $left + 120;
$top = $top + 60;
}
$leftStart = $leftStart - 120;
$topStart = $topStart + 60;
}
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#top").click(function(){
var y = document.getElementById('ycoord').value;
var x = document.getElementById('xcoord').value;
$(".move").animate({"left": "-=120px", "top": "+=60px"}, 500);
changeImg(x, y, 'up');
$("#ycoord").val(parseInt( y ) - 1);
});
$("#bottom").click(function(){
var y = document.getElementById('ycoord').value;
var x = document.getElementById('xcoord').value;
$(".move").animate({"left": "+=120px", "top": "-=60px"}, 500);
changeImg(x, y, 'down');
$("#ycoord").val(parseInt( y ) + 1);
});
$("#left").click(function(){
var y = document.getElementById('ycoord').value;
var x = document.getElementById('xcoord').value;
$(".move").animate({"left": "+=120px", "top": "+=60px"}, 500);
changeImg(x, y, 'left');
$("#xcoord").val(parseInt( x ) - 1);
});
$("#right").click(function(){
var y = document.getElementById('ycoord').value;
var x = document.getElementById('xcoord').value;
$(".move").animate({"left": "-=120px", "top": "-=60px"}, 500);
changeImg(x, y, 'right');
$("#xcoord").val(parseInt( x ) + 1);
});
function changeImg(x, y, move){
$.ajax({
type: "POST",
url: "addImage.php",
data: 'x=' + x + '&y=' + y + '&move=' + move,
cache: false,
success: function(html){
$(html).appendTo($("#tileView"));
}
});
$.ajax({
type: "POST",
url: "removeImage.php",
data: 'x=' + x + '&y=' + y + '&move=' + move,
cache: false,
success: function(xml){
$("removeTile",xml).each(function(id) {
removeTile = $("removeTile",xml).get(id);
removeID = $("tileID",removeTile).text();
$("#" + removeID).remove();
});
}
});
}
});
</script>
if($_REQUEST["move"] == "up") {
$xmin = $x - 5;
$xmax = $x + 5;
$y = $y - 6;
$left = 360;
$top = -360;
for($i = $xmin; $i <= $xmax; $i++) {
$id = "T" . $i . "_" . $y;
$newTiles .= "<div class='move' style='position:absolute; left:" . $left . "px; top:" . $top . "px;' id='$id'><img src='./Map/TileGroup1/1-$i-$y.gif'></div>\n";
$left += 120;
$top += 60;
}
}
if($_REQUEST["move"] == "up") {
$xmin = $x - 5;
$xmax = $x + 5;
$y = $y + 5;
echo "<?xml version=\"1.0\"?>\n";
echo "<response>\n";
for($i = $xmin; $i <= $xmax; $i++) {
echo "\t<removeTile>\n";
echo "\t\t<tileID>T" . $i . "_" . $y . "</tileID>\n";
echo "\t</removeTile>\n";
}
echo "</response>";
}