現在、キーダウンで移動可能な div を作成しようとしています。Jqueryを使用してkeydown関数を機能させることができました。ただし、divが移動できず、回避する必要があるバリアを作成したいと思います。
div のミニマップのようなものです。
私は JSfiddle を使用して自分のコードをテストしています。
http://jsfiddle.net/bDMnX/828/
HTML:
<div id="pane">
<div id="barrier"></div>
<div id="box"></div>
</div>
CSS:
#pane {
position:relative;
width:300px; height:300px;
border:2px solid red;
}
#box {
position:absolute; top:140px; left:140px;
width:20px; height:20px;
background-color:black;
}
#barrier{
position:absolute; top:50px; left:50px;
width:50px; height:50px;
background-color:grey;
}
JS:
var pane = $('#pane'),
box = $('#box'),
w = pane.width() - box.width(),
d = {},
x = 3;
function newv(v,a,b) {
var n = parseInt(v, 10) - (d[a] ? x : 0) + (d[b] ? x : 0);
return n < 0 ? 0 : n > w ? w : n;
}
$(window).keydown(function(e) { d[e.which] = true; });
$(window).keyup(function(e) { d[e.which] = false; });
setInterval(function() {
box.css({
left: function(i,v) { return newv(v, 37, 39); },
top: function(i,v) { return newv(v, 38, 40); }
});
}, 20);
私はこれに最適な方法を使用していない可能性があり、このコードを改善または改善する方法についてフィードバックをお待ちしています。
#box div が #barrier に触れたり越えたりするのを止めたいと思います。
前もって感謝します。