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

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

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

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

3842閲覧

Monaca新IDEでCanvas描画時に例外発生

tsubozaemon

総合スコア11

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2018/05/07 15:16

編集2018/05/08 12:03

前提・実現したいこと

開発環境:Monacaで、JavaScriptを使用した
ゲーム制作を行っています。
Monacaのブロック崩しゲームのソースを参考に、画面描画部分を実装しました。
とりあえず、Monacaのプレビューで動作確認を行っています。

発生している問題・エラーメッセージ

旧IDEでは問題ないのですが、新IDEでは描画メソッド部分で
下記の例外メッセージが出て描画が成功しません。

InvalidStateError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D':
The HTMLImageElement provided is in the 'broken' state.

該当のソースコード

JavaScript

1var gc = document.getElementById('gameCanvas').getContext('2d');//描画canvas取得 2gc.setAttribute('width', window.innerWidth); 3gc.setAttribute('height', window.innerHeight); 4gc.style.visibility = "visible"; 5 6var srcImage = new Image();//ゲームの元画像 7srcImg.src = "../www/img/XXX.png";//srcImageに読み込ませるpngファイルを相対パス指定 8 9gc.drawImage(srcImage, X, Y, W, H, 0, 0, 0, 0)//srcImageの画像をゲーム画面に描画

html

1<head> 2 <style> 3 canvas { 4 border: 2px solid #000; 5 position: absolute; 6 top: 0; 7 left: 0; 8 visibility: hidden; 9 } 10 </style> 11 <meta charset="UTF-8"> 12 <title>XXX</title> 13 <meta name="viewport" content="target-densitydpi=device-dpi,width=320,maximum-scale=1,minimum-scale=1,user-scalable=no" /> 14 <meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> 15 <link rel="stylesheet" href="components/loader.css"> 16 <link rel="stylesheet" href="css/style.css"> 17 <script src="components/loader.js"></script> 18 (中略) 19 <script src="js/main.js"></script> 20</head> 21<body> 22<div class = "contents"> 23//JavaScriptソースでは簡略化しましたが、実際には下記のように 24//「pngファイルから読み込んだ画像を描画しているキャンバス」と「プレイヤーに可視なキャンバス」に分かれています 25 <canvas id="gameCanvas"></canvas>←プレイヤーに可視なのはこちら 26 <canvas id="gameCanvasFlip"></canvas>←pngファイル画像を直接描画 すべての画像描画後、全体をgameCanvasにコピー 27</div>

試したこと

「jsファイルやpngファイルをローカルPCにダウンロードし、Webブラウザから
ローカルのindex.htmlを読み込む」方法で、ゲームを起動してみたところ

InternetExplorer11→問題なく描画可能
GoogleChorome→Monaca 新IDEと同一の例外発生し描画できず

となりました。

補足情報(FW/ツールのバージョンなど)

(特になし)

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

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

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

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

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

namimon

2018/05/08 00:27

htmlのソースもお願いします。
guest

回答1

0

自己解決

javascriptのpngファイル読み込みで

・srcImg.src = "../www/img/XXX.png"
ここの<../www/img/XXX.png>を、相対パスでなく
<img/XXX.png>にすると、新IDEで例外発生しなくなりました。

投稿2018/05/19 13:05

tsubozaemon

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問