0

長方形に移動したい。行の終わりに達したら、改行を入れて次の行の先頭に置きます。長方形は、改行を行うために適切な座標を取りません。何か案は?これは私の機能です:

<script type="text/javascript"><![CDATA[
    var rect = document.getElementById('player');
    var x = rect.getAttribute('x')*1,
        y = rect.getAttribute('y')*1;
    setInterval(move, 30);

    function move()
    {
        if (rect.getAttribute('x') < 500){
            rect.x.baseVal.value = ++x;
        }
        else if (rect.getAttribute('x') >= 500){
            rect.x.baseVal.value = x-250;
            rect.y.baseVal.value = y+250;
        }
    }
    ]]></script>

ありがとう!

4

1 に答える 1

1

要素から値を取得するのは不必要にコストがかかり、あなたの場合、値を取得または設定するのが遅すぎるようです。x各ループで値を取得する代わりに、forとy:を追跡します。

var rect = document.getElementById('player');
var x = rect.getAttribute('x')*1,
    y = rect.getAttribute('y')*1;
var pos_x = 0, pos_y = 0;
setInterval(move, 30); 

function move(i)
{
    pos_x++;
    if (pos_x < 500){
        rect.setAttribute('x', pos_x);
    }
    else {
        pos_y +=10
        pos_x = 0;
        rect.setAttribute('x', pos_y);
        rect.setAttribute('y', pos_y);
    }
}​

http://jsfiddle.net/gMwMb/

于 2012-09-06T11:12:59.963 に答える