前提・実現したいこと
開発環境: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/ツールのバージョンなど)
(特になし)
回答1件
あなたの回答
tips
プレビュー