忍者ブログ

からすまる日誌 JavaScript

応用2(22) 神経衰弱(5)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

応用2(22) 神経衰弱(5)

animateメソッドは実はsetIntervalが起こっているので
animateが終わっていないうちに次の行を実行してしまう。
第三引数をfunctionとし、
animateが終わった後にその関数を実行するようにする
その内容は、いままで次の行に書いていたやつ。
 
なお、第二第三を別に書いてもいいし、もっとたくさんオプションもあるらしい。
「終了時に実行」(いま第三引数に入っているやつ)とか、
animateの時間(いま第二引数に入っているやつ)とか。
 
 
 
→さて、当たり判定の部分はこうなった
 
 //当たり判定
 function hantei(){
  console.log('here is in hantei');
  if(eles[0]==eles[1]){
   console.log('一致');
  }else{
   console.log('不一致');
   eles[0].animate({'opacity':'20%'},1500,function(){//第二引数でミリ秒、第三引数でアニメが終わったら次実行
     eles[0].attr('class','close').css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1'});
   });//違っていたらカードが透明になる。先生版は値0
   //第二引数は時間(ミリ秒)
   eles[1].animate({'opacity':'20%'},1500,function(){
     eles[1].attr('class','close').css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1'});
   });//違っていたらカードが透明になる
   //eles[0].attr('class','close').css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1'});
   //eles[1].attr('class','close').css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1'});
  }
  clicks = 0;//クリック数のリセット
 }

さらに条件文を修正→
 
if(eles[0].text()==eles[1].text()){
 
そういえばなぜかこれにしないと「一致」にならなかった。
 

closeカードだけが選べるようにする→ 
.closeを追加
 
 //click時の動作予約 
 
 $('#stage div.close').on('click',function(){//closeクラスだけのものが押せる
  
 
ここまで
--->test3.js(なにか挙動がおかしいけど)
 
$(function(){
 console.log('hi');
 
 var kigo = ['!','!','#','#','$','$','&','&',
       '=','=','@','@','+','+','?','?'];//2枚ずつカードを用意
 //シャッフルする
 for (i=0; i<50; i++){
  var r1 = Math.floor(Math.random()*kigo.length);//ランダム小数点切り捨て
  var r2 = Math.floor(Math.random()*kigo.length);
  var temp = kigo[r1];
  kigo[r1] = kigo[r2];
  kigo[r2] = temp;
 }
 console.log([kigo]);
 
 //stage上に16のdivを配置。中身は配列の文字
 for (i=0; i<kigo.length; i++){
  var ele = $('<div>').text(kigo[i]).attr('class','close');//divを生成、textで配列の中身を入れる
  $('#stage').append(ele);//stage上に配置
 }
 
 var clicks = 0;//カードのクリック回数
 var eles = [];//オブジェクトそのもの(ここではthis)を入れる配列
 
 //click時の動作予約 
 
 $('#stage div.close').on('click',function(){//closeクラスだけのものが押せる
  eles[clicks] = $(this);//呼び出し元(クリックされたパネル)の「オブジェクトそのもの」
  //elesの配列が何番目かはclicksの回数が自動で入る
  
  $(this).css({'background':'#ffb7a3','color':'#f00'}).attr('class','open');
  clicks ++;//クリック回数を増やす
  //console.log('eles is '+eles+' and clicks is '+clicks);
  
  //2枚以上開く前に判定をする
  if (clicks==2){//クリック数が2回目だったら
   clicks = 0;//クリック数のリセット
   hantei();//判定の関数を呼び出す
  }
 });
 
 //当たり判定
 function hantei(){
  if(eles[0].text()==eles[1].text()){
   console.log('一致');
   
  }else{
   console.log('不一致');
   eles[0].animate({'opacity':'20%'},1500,function(){//第二引数でミリ秒、第三引数でアニメが終わったら次実行
     eles[0].attr('class','close').css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1'});
   });//違っていたらカードが透明になる。先生版は値0
   //第二引数は時間(ミリ秒)
   eles[1].animate({'opacity':'20%'},1500,function(){
     eles[1].attr('class','close').css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1'});
   });//違っていたらカードが透明になる
  }
 }
 
});
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R