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

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

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

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

1023閲覧

画像がうまく読み込まれず定期的に表示されなくなる不具合を改善したいです。

Nemuu

総合スコア14

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2021/11/10 07:14

Javascriptの基礎を勉強し終え、ノベルゲーム開発に挑戦しているのですが、たまにノベルゲームに登場するキャラクター画像が表示されない不具合が発生してしまいます。
以下リンクのゲームに登場するキャラクターが定期的に表示されなくなってしまいます。
開発中のゲームはこちら
不具合が出ている登場キャラクター↓

読み込みの問題だと思うのですが、改善方法がわかりません。
初歩的な問題でしたらすいません。

js

1class Novel { 2 3 constructor() { 4 this.canvas = document.getElementById('canvas'); 5 this.ctx = this.canvas.getContext('2d'); 6 this.canvas.width = 1024; 7 this.canvas.height = 576; 8 9 // 進行状況を管理 10 let nowcount = 0; 11 12 // 文字、画像情報を配列で管理 13 this.data(); 14 15 //初期画像を描写 16 this.update(nowcount, this.canvas); 17 this.draw(this.canvas); 18 19 //クリック時の動作 20 this.canvas.addEventListener('click', () => { 21 // 次のページへ遷移 22 23 if (nowcount === 0) { 24 this.music = new Audio('bgm/nonki.mp3'); 25 this.music.play(); // 再生 26 this.music.loop = true; 27 } 28 29 console.log(this.wareHouse.length); 30 31 if (nowcount === this.wareHouse.length) { 32 console.log('owari'); 33 this.music.pause(); 34 window.open('top.html', '_blank'); 35 } 36 37 38 nowcount++; 39 40 41 42 this.update(nowcount, this.canvas); 43 //描写処理 44 this.draw(this.canvas); 45 46 47 }); 48 } 49 50 51 52 update(c, canvas) { 53 54 this.canvas = canvas; 55 this.ctx = this.canvas.getContext('2d'); 56 57 58 this.h = this.canvas.height; 59 this.w = this.canvas.width; 60 61 // 背景のプロパティ 62 this.ctx.beginPath(); 63 this.bg = new Image(); 64 this.bg.src = this.wareHouse[c][0]; 65 66 // テキストボックスのプロパティ 67 this.ctx.beginPath(); 68 this.textbox = new Image(); 69 this.textbox.src = this.wareHouse[c][1]; 70 71 // 人物のプロパティ 72 this.human = new Image(); 73 this.human.src = this.wareHouse[c][2]; 74 this.humanPosition = this.wareHouse[c][6] 75 76 // 名前のプロパティ 77 this.name = this.wareHouse[c][3]; 78 79 // テキストのプロパティ 80 this.text = this.wareHouse[c][4]; 81 this.ctx.font = "40px serif"; 82 this.ctx.fillStyle = 'white'; 83 84 // テキストのプロパティ 85 this.text2 = this.wareHouse[c][5]; 86 this.ctx.font = "30px serif"; 87 this.ctx.fillStyle = 'white'; 88 89 // 効果音のプロパティ 90 this.sd1 = new Audio(this.wareHouse[c][7]); 91 this.sd1.play(); // 再生 92 } 93 94 95 96 draw() { 97 98 99 100 this.bg.onload = (canvas) => { 101 // 背景描写 102 this.ctx.drawImage(this.bg, 0, 0); 103 //登場人物表示 104 this.ctx.drawImage(this.human, this.humanPosition, this.h - this.human.height); 105 // テキストボックス描写 106 this.ctx.drawImage(this.textbox, 0, this.h - this.textbox.height - 10, this.w, 170); 107 // 人物名描写 108 this.ctx.fillText(this.name, 10, this.h - this.textbox.height + 40); 109 //テキスト描写 110 this.ctx.fillText(this.text, 10, this.h - this.textbox.height + 100); 111 //テキスト描写 112 this.ctx.fillText(this.text2, 10, this.h - this.textbox.height + 140); 113 }; 114 } 115 116 data() { 117 this.wareHouse = [ 118//表示するテキスト、画像などを管理 119//量が多すぎるため、追記欄に記載 120] 121 122 return this.wareHouse; 123 } 124 125} 126 127 128new Novel; 129 130 131 132let menu = document.getElementById('menu') 133let menuBtn = document.getElementById('mbtn'); 134 135menuBtn.addEventListener('click', () => { 136 menu.classList.toggle('hidden'); 137 138}) 139 140 141

html

1<!DOCTYPE html> 2<html> 3 4<head> 5 <link rel="stylesheet" href="style.css"> 6 <meta charset="utf-8"> 7 <link href="https://fonts.googleapis.com/earlyaccess/nicomoji.css" rel="stylesheet"> 8 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" 9 integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous"> 10</head> 11 12<body> 13 <main> 14 <div id="game"> 15 <div id="menu" class="hidden"> 16 <ul> 17 <a href="top.html"><li>トップに戻る</li></a> 18 <a href="index.html"><li>最初からプレイ</li></a> 19 </ul> 20 21 </div> 22 <i id="mbtn" class="fas fa-hamburger"></i> 23 <canvas id="canvas"></canvas> 24 </div> 25 26 </main> 27 <audio id="bgm1"> 28<source src="bgm/nonki.mp3"> 29 30 </audio> 31 <script src="index.js"></script> 32</body> 33 34</html>

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

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

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

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

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

maisumakun

2021/11/10 07:17

サーバは何を使っていますか?
Nemuu

2021/11/10 07:24

お名前ドットコムのRSプランサーバーを使っております。
guest

回答1

0

this.bg.onloadですべてを描画していますが、その時点でたとえばthis.textboxのロードが完了している保証はないですよね。保証されているのはthis.bgのロードが完了していることだけだと思います。

投稿2021/11/10 07:24

itagagaki

総合スコア8402

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問