前提・実現したいこと
エラーは47行目のlengthという部分に出ていて値が代入されてない。と出ていると思います。そこの解決方法がわかりません。returnや()が足りないとも思えないのですがどうすればいいのでしょうか?
発生している問題・エラーメッセージ
Uncaught TypeError: Cannot read property 'length' of undefined
該当のソースコード
html5
1<html> 2 <head> 3 <meta charset="utf-8" /> 4 <title>フルーツ拾いゲーム</title> 5 <script src="https://code.createjs.com/1.0.0/createjs.min.js"></script> 6 <script> 7 var img_a = new Image(); 8 img_a.src = 'imgs/assets/apple.png' 9 var img_b = new Image(); 10 img_b.src = 'imgs/assets/bucket.png' 11 var img_c = new Image(); 12 img_c.src = 'imgs/assets/ichigo.png' 13 window.addEventListener("load", init); 14 15 function init() { 16 var stage = new createjs.Stage("myCanvas"); 17 18 var apples = []; 19 var strawberrys = []; 20 var count = 0; 21 var score = 0; 22 var STAGE_W = 960; 23 var STAGE_H = 540; 24 var SIZE = 64; 25 26 var bg = new createjs.Shape(); 27 bg.graphics.beginFill("0xfff8dc").drawRect(0, 0, STAGE_W, STAGE_H); 28 stage.addChild(bg); 29 30 var bucket = new createjs.Bitmap(img_b); 31 stage.addChild(bucket) 32 33 var scoreT = new createjs.Text("", "24px sans-serif", "#333333") 34 stage.addChild(scoreT); 35 36 createjs.Ticker.framerate = 60; 37 createjs.Ticker.addEventListener("tick", handleTick); 38 39 function handleTick() { 40 for(var i = 0; i < apples.length; i++) { 41 apples[i].y += 2; 42 if(apples[i].y > STAGE_W - SIZE) { 43 showGameOver(); 44 return; 45 } 46 } 47 for(var j = 0; j < strawberrys.length; j++) { 48 strawberrys[i].y += 2; 49 if(strawberrys[i].y > STAGE_W - SIZE) { 50 showGameOver(); 51 return; 52 } 53 } 54 55 bucket.x += (stage.mouseX - bucket.x) * 0.1; 56 bucket.y += (stage.mouseY - bucket.y) * 0.1; 57 58 count = count + 1; 59 if(count % 60 == 0){ 60 var apple = new createjs.Bitmap(img_a); 61 var strawberrys = new createjs.Bitmap(img_c); 62 apple.x =(STAGE_W - SIZE) * Math.random(); 63 apple.y = 0; 64 strawberrys.x = 0; 65 strawberrys.y = (STAGE_W - SIZE) * Math.random(); 66 stage.addChild(apple); 67 apple.push(apple); 68 stage.addChild(strawberrys); 69 apple.push(strawberrys); 70 } 71 72 for(var i = 0; i < apples.length; i++){ 73 var apple = apples[i]; 74 var pt = apple.localToLOcal(32, 55, bucket); 75 if(bucket,hitTest(pt.x, pt.y)) { 76 stage.removeChild(apple); 77 apple.splitce(i, 1); 78 score += 100; 79 scoreT.text = String(score); 80 break; 81 } 82 } 83 84 for(var i = 0; i < strawberrys.length; i++){ 85 var strawberry = strawberrys[i]; 86 var pt = strawberry.localToLOcal(32, 55, bucket); 87 if(bucket,hitTest(pt.x, pt.y)) { 88 stage.removeChild(apple); 89 strawberry.splitce(i, 1); 90 score += 100; 91 scoreT.text = String(score); 92 break; 93 } 94 } 95 96 stage.updata(); 97 98 } 99 100 function showGameOver(){ 101 alert("ゲームオーバー! あなたのスコアは" + score +"でした。"); 102 createjs.Ticker.removeAllEventListeners(); 103 } 104 } 105 </script> 106 </head> 107 <body> 108 <canvas id="myCanvas" width="960" height="540"></canvas> 109 </body> 110</html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/03 13:52