0

私はブラウザで単純な Pirates クローンを構築しており、基本を学ぶためにライブラリのない通常の JavaScript を使用しています。ゲーム ボードである絶対配置 div 内で、ゲーム スプライトである相対配置 div を移動しようとしています。実際にdivを移動するまでのすべてのコードがありますが、divの相対的な位置を変更するコマンドが見つかりません。

ここに私が持っているものがあります:

function move(e){
    var x=e.keyCode;
    var keychar=String.fromCharCode(x);
    if (x === "a") {
       // What goes here?
    }
};
4

5 に答える 5

1

あなたはそれを修正することによってそれを動かすことができるはずです、el.style.leftそしてel.style.topどこelにあなたの位置への参照がありますDIV

于 2012-10-19T18:33:45.350 に答える
1

divElement.style.leftピクセル単位の値を変更(増加または減少)します。

于 2012-10-19T18:33:57.143 に答える
1

まず、内部divにはposition: absolute、ではなく、が必要relativeです。外側のものはどちらかを持つことができます。次に、設定style.topstyle.leftすべてのキーストロークの問題です。

function move(e){
    var x=e.keyCode;
    var keychar=String.fromCharCode(x).toLowerCase();
    var div = document.getElementById('mydiv');
    if (x === "a") {
        var currentLeft = parseInt(div.style.left, 10);
        // to move left:
        div.style.left = (currentLeft-5) + 'px';
    }
};

これは機能するはずですが、スプライトが期待したほどスムーズに移動しない場合があります。その場合、おそらくアニメーションループとキーストロークバッファが必要になります。

于 2012-10-19T18:35:38.167 に答える
0

あなたは変更することができstyle.leftますstyle.top

var d = document.getElementById("idselector");
d.style.left = "30px";
d.style.top = "40px";
于 2012-10-19T18:34:45.827 に答える
0
var div = document.getElementById("divId");

if(x == "a"){        
    div.position.left = (parseInt(div.style.left) - 10) + "px";
}
else if(x == "d"){
    div.position.left = (parseInt(div.style.left) + 10) + "px";
}

// similar code for other keys with div.style.top
于 2012-10-19T18:37:13.850 に答える