こんにちは。
enchant.jsを使ってWebゲームを作っています。
添付の画像にあるように、次々にバルーンが現れ、上昇していきます。
あるバルーンをクリックするとそのバルーンは消えます。
いずれかのバルーンが上端まで行ってしまうとゲームオーバーです。
ここで「あるバルーンをクリックするとそのバルーンは消えます。」が
うまく実装できていません。
コードは以下の通りです。
JavaScript
1var game = null; 2var bgi = null; 3var ballons = []; 4var sprite_size_x = 60; 5var sprite_size_y = 112; 6var ballon_color=0; 7 8enchant(); 9 10function startNow(){ 11 var div = document.getElementById('msg'); 12 document.body.removeChild(div); 13 14 game = new Game(1200, 800); 15 game.preload('desert.png'); 16 game.preload('ballon.png'); 17 game.fps = 10; 18 19 game.onload = function(){ 20 bgi = new Sprite(1200,800); 21 bgi.image = game.assets['desert.png']; 22 bgi.moveTo(0,0); 23 game.rootScene.addChild(bgi); 24 game.addEventListener(enchant.Event.ENTER_FRAME, function(event){ 25 gameMain(); 26 }); 27 }; 28 29 game.start(); 30 setTimeout(makeBallon, 1000); 31}; 32 33function gameMain(){ 34 for(var i=0;i<ballons.length;i++){ 35 ballons[i].moveBy(0,-10); 36 } 37} 38 39function makeBallon(){ 40 var ballon = new Sprite(sprite_size_x,sprite_size_y); 41 ballons.push(ballon); 42 ballon.image = game.assets['ballon.png']; 43 ballon.frame=[ballon_color]; 44 var x=Math.floor(Math.random() * (game.width - sprite_size_x)); 45 var y=Math.floor(Math.random() * (game.height - sprite_size_y*2))+sprite_size_y; 46 ballon.moveTo(x,y); 47 game.rootScene.addChild(ballon); 48 ballon.addEventListener(enchant.Event.TOUCH_START, function(event){ 49 var pos=-1; 50 for(var i=0;i<ballons.length;i++){ 51 if(ballons[i]==this){ 52 pos=i; 53 break; 54 } 55 } 56 if(pos!=-1){ 57 ballons[pos].removeFromScene(); 58 ballons.splice(pos,1); 59 } 60 }); 61 62 ballon_color++; 63 if(ballon_color>2){ 64 ballon_color=0; 65 } 66 setTimeout(makeBallon, 1000); 67}
ballon変数はローカルですが、配列ballonsに入るので、インスタンスは
残っていると思うのですが、クリックしても反応がありません。
何か、良い方法はないものでしょうか?game.rootSceneにイベントを割付て
クリックした座標がどこにあるかで判定することもできますが、
スクラッチを勉強している子どもの次のステップとして提示したいので
一時的なインスタンスにイベントを割付たいです。
困っています。アドバイスお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/13 05:58