0

タイルベースのマップの描画に問題があります:(ただし、マップはプレーヤーcanvasに表示されるもののみを表示します.1つのレイヤーを描画 する要素があります.上ではcanvas、javascriptを使用して32x32pxの画像を添付します.画像の位置は以下に基づいています:$tr $tc

以下に示すように:

for($tr = 0; $tr < count($mapArray)-1; $tr++) {
for($tc = 0; $tc < count($mapArray[$tr])-1; $tc++) {
    if($mapArray[$tr][$tc]!== null){
        echo "attachImage(" . $mapArray[$tr][$tc]. "," . $tc . "," . $tr . ",context);";
    }
}
}

0,0 からタイルを描画する方法がわかりません。常に配列の同じ位置からタイルの描画を開始します (例 3,2)。たぶん、私はこれを考えすぎているか、疲れすぎているのでしょう...どうにもわかりません:(

これがJavaScriptの部分です

function attachImage(tile, x, y, canvasContext)
{
  var base_image = new Image();
  base_image.onload = function(){
    canvasContext.drawImage(base_image, 32*(x-0),32*(y-0));
  }
  base_image.src = 'Images/tiles/'+(tile-1)+'.png';
}

繰り返しますが、プレーヤーの周りのタイルのみを表示したいので、0px,0px から描画を開始したいと考えています。

4

1 に答える 1

0

この質問を削除する方法がわかりませんが、答えはわかりました

$c = 0;
for($tr = $drawy; $tr < $drawy2; $tr++) {
    $r = 0;
    for($tc = $drawx; $tc < $drawx2; $tc++) {
        if($mapArray[$tr][$tc] !== null)
        {
            $tile = $mapArray[$tr][$tc];
            echo "attachImage(" . $tile . "," . $r . "," . $c . ",context);";
        }
        $r++;
    }
    $c++;
}

for($tr = 0; $tr < count($mapArrayy)-1; $tr++) {
    for($tc = 0; $tc < count($mapArrayy[$tr])-1; $tc++) {
        if($mapArrayy[$tr][$tc]!== null){
            echo "attachImage(" . $mapArrayy[$tr][$tc]. "," . $tc . "," . $tr . ",context2);";
        }
    }
}

最初のループに $c と $r を追加しました。それで全部です。現在は 0px,0px から描画されます。

于 2012-10-30T08:03:37.773 に答える