• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascript 配列について)

javascript配列でHTML5のcanvasに図形を描画する方法

このQ&Aのポイント
  • javascriptの配列を使用してHTML5のcanvasに複数の図形を描画する方法について教えてください。
  • 図形の数や座標に規則性はなく、xやy、width、heightが変動するケースも考慮してください。
  • 質問の例では、ctx.fillRect()メソッドを使用して図形を描画しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

なんてことない小手先ですが ◎方法1:単に短くする var rects = [{ s: "rgba(0,0,0,1)", r: [20, 10, 10, 10] },  { s: "rgba(0,0,0,1)", r: [20, 10, 10, 10] }, (略) ]; for (var i = 0; i < rects.length; ++i) {  ctx.fillStyle = rects[i].s;  ctx.fillRect.apply(ctx, rects[i].r); } ◎方法2:配列にする var rects = [  ["rgba(0,0,0,1)", [20, 10, 10, 10]],  ["rgba(0,0,0,1)", [20, 10, 10, 10]] ]; for (var i = 0; i < rects.length; ++i) {  ctx.fillStyle = rects[i][0];  ctx.fillRect.apply(ctx, rects[i][1]); } ◎方法3:さらに削る var rects = [  ["0,0,0,1", [20, 10, 10, 10]],  ["0,0,0,1", [20, 10, 10, 10]] ]; for (var i = 0; i < rects.length; ++i) {  ctx.fillStyle = "rgba(" + rects[i][0] + ")";  ctx.fillRect.apply(ctx, rects[i][1]); } #良いかどうかは問わず

ixkaito
質問者

お礼

LOHA様 早速ご回答ありがとうございます。 まだ試していませんが、まさに知りたい内容でした。 もともとイメージしていたのが方法2でしたが、 どれも試させていただきます。

その他の回答 (1)

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.1

普通にfor文で回せば良いと思います。 var rects = [{ fillStyle: "rgba(0,0,0,1)", rect: [20, 10, 10, 10] },  { fillStyle: "rgba(0,0,0,1)", rect: [20, 10, 10, 10] }, (略) ]; for (var i = 0; i < rects.length; ++i) {  ctx.fillStyle = rects[i].fillStyle;  ctx.fillRect.apply(ctx, rects[i].rect); } のような感じでしょうか。

ixkaito
質問者

補足

LOHA様 早速ご回答いただきましてありがとうございます。 追加で、もし可能であれば教えていただきたいのですが、 図形の数がかなり多いので、rectsの配列で、 fillStyleとrectを省略できるような方法はありますでしょうか。 何卒よろしくお願い致します。

専門家に質問してみよう