質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

4415閲覧

canvas上に複数の画像を複数個ランダムな場所に配置する方法

4443g

総合スコア7

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/08/15 00:25

canvas上に複数の画像を複数個ランダムな場所に配置する方法を教えてください。
canvasのサイズは横1300px 縦700pxです。
背景画像も同上です。
背景画像の上に 横200px 縦100px程度の大きさの別の画像を
複数の画像種類、複数個、ランダムな場所に配置したいのですが、
表示されているすべての画像がわかるようにコンソールにだしているのですが、
配置されている画像とコンソールにでている枚数が合いません。

ctx.drawImage(imgGazo,100,100);
今は描画する座標の位置を100,100で固定にしてしまっていますが、
ここをランダムに枠内にうまく収めるような方法も教えていただけますでしょうか。

javascript

1 2 3 4var canvas = document.getElementById('ca'); 5var ctx = canvas.getContext('2d'); 6 7imgArr = [ 8 "画像url1", 9 "画像url2", 10 "画像url3", 11]; 12 13document.addEventListener("DOMContentLoaded",function(){ 14 draw(); 15}); 16 17function draw(){ 18 19 var backimg = new Image(); 20 backimg.src ="背景画像"; 21 22 backimg.onload = function(){ 23 ctx.drawImage(backimg,0,0); 24 } 25 26 27for(var i = 0; i < randomNm(1,10); i++){ 28 29 var imgGazo = new Image(); 30 var imgNo = Math.floor(Math.random()*imgArr.length); 31 32 imgGazo.src = imgArr[imgNo] 33 34 imgNeko.onload = function(){ 35 ctx.drawImage(imgGazo,100,100); 36 } 37} 38 39function randomNm(min,max){ 40 41 return Math.floor( Math.random() * (max + 1 - min) ) + min; 42} 43 44 45 46 47 48 49

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「配置されている画像とコンソールにでている枚数が合いません」
背景画像の読み込みが完了する前に小さな画像の描画へ処理が移っている為、枚数が合わないものと思います。
背景画像のonloadが完了したら小さな画像の描画へ移るようにします。

javascript

1function draw() { 2 3 //省略 4 5 backimg.onload = function(){ 6 ctx.drawImage(backimg,0,0); 7 drawMini(); 8 } 9} 10 11function drawMini() { 12 for(var i = 0; i < randomNm(1,10); i++){ 13 14 //省略 15 16 } 17}

なお、小さな画像の配置位置は以下の様に求めます。

javascript

1x = Math.floor(Math.random() * (1300 - 200 + 1)); 2y = Math.floor(Math.random() * (700 - 100 + 1));

投稿2017/08/15 00:46

rik

総合スコア1151

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

4443g

2017/08/15 11:03

ありがとうございました。 上手く動作いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問