FC2ブログ

画面にタッチしたときの処理

画面にタッチしたときの処理

//タッチしたときの処理
fuction touchHandler(t){
//タッチ座標取得
var px=t.pageX, py=t.pageY;

//何番目のピースを動かしたいか計算
var px2=Math.floor(px/BLOCK_W);
var py2=Math.floor(py/BLOCK_H);
var no=getNo(px2,py2);

//空白ブロックなら動かさない
if(blocks[no]==-1) return;

//上下左右に動かせるブロックがあるか確認
for(var i=0;ivar pt=UDRL[i];
var xx=px2+pt[0];
var yy=py2+pt[1];
varNo=getNo(xx,yy);
if(xx<0||xx>=COL_COUNT)continue;
if(yy<0||yy>=ROW_COUNT)continue;

//移動可能か
if(blocks[no]==-1){
blocks[no] = blocks[getNo(px2,py2)];
blocks[getNo(px2,py2)]=-1;
drawPuzzle();
checkClear();
break;
}
}
}

何番目のピースを動かしたいか計算するところでは
画面の左上が基点なので
ブロックの幅や高さで割るだけで
何番目のピースか計算できる
正確には、ピースを座標で判断だけど

ブロックが動かせるか確認するには、
上下左右に空白ブロックがあるか調べる

それが、if(blocks[no]!=-1)
のif制御のところ

で、もし空白ブロックがあるなら
スコープ内の処理をする

処理は
移動可能なら、空白ブロックと
タッチしたブロックのピースを代入して入れ替える
つまり、座標の交換代入ということ
ソースにすると
blocks[no]=blocks[getNo(px2,py2)];
これで、座標取得
つぎに、
blocks[getNo(px2,py2)]=-1;
これで、取得したブロックへ
空白ブロックフラグを設定
そして、drawPuzzle()
で描画する

フラグ立てただけじゃ絵が変わらないから描画しないと駄目
スポンサーサイト



コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック