WEB开发网
开发学院手机开发iPhone 开发 iPhone方块游戏拖动手势源码共享 阅读

iPhone方块游戏拖动手势源码共享

 2010-08-22 00:49:00 来源:WEB开发网   
核心提示:代码效果如下图所示: 在屏幕的中间大片主区域内,支持水平拖动,快速下扫手势;同时可以用屏幕下部的虚拟键盘操作,下面是代码://按键状态表,iPhone方块游戏拖动手势源码共享,最多16个键位,//第一个元素记录键盘状态并纪录被按下了多长时间//第二个元素记录被连发多少次了int g_key[16][2];float g

代码效果如下图所示: 在屏幕的中间大片主区域内,支持水平拖动,快速下扫手势;同时可以用屏幕下部的虚拟键盘操作。

下面是代码:

//按键状态表,最多16个键位,//第一个元素记录键盘状态并纪录被按下了多长时间//第二个元素记录被连发多少次了int g_key[16][2];float g_first_touch[2]; //纪录手指刚按下的点float g_last_touch[2]; //纪录上一次move事件的点,move不一定水平滑动float g_last_x; //纪录上一次水平滑动的x坐标float g_end_touch[2]; //纪录手指离开时的点//操作触摸按钮位置const static int BUTTON_RECT[11][4]={ {241,0,320,50}, //back {161,0,240,50}, //restart {0,0,80,50}, //pause {108,423,208,480}, //down {0,0,0,0}, //turn1 {0,369,107,422}, //left {0,51,320,368}, //turn {209,369,320,480}, //ddown {0,423,107,480}, //save {108,369,208,422}, //right {81,0,160,50} //help}; typedef enum _els_key { ELSKEY_BACK, ELSKEY_RESTART, ELSKEY_PAUSE, ELSKEY_DOWN, ELSKEY_TURN1, ELSKEY_LEFT, ELSKEY_TURN, ELSKEY_DROP, ELSKEY_HOLD, ELSKEY_RIGHT, ELSKEY_HELP} ELSKEY; #define KEY_PRESSED 1000000#define KEY_DOWN 1#define KEY_UP 0 //检测按键,如果某些键盘按下不松开,可以自动连发...//兼容拖动手势,手势也会产生键盘事件bool GameStatePlay::TestKey(int k){ //只有左右下三个虚拟键支持连发 const static int paifa[2][2]={{200,10000},{200,90}}; const static int ispaifa[16]={0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0}; long dt; if(g_key[k][0]) { //虚拟键盘或者拖动手势产生的键盘按下快速弹起事件 if(g_key[k][0]==KEY_PRESSED) { g_key[k][0]=KEY_UP; g_key[k][1]=0; return true; } //计算本次检测到上一次按键的时间,用于判断是否应该产生连发 gettimeofday(&curtime, 0); dt = (curtime.tv_sec-oldtime.tv_sec)*1000000+curtime.tv_usec-oldtime.tv_usec; oldtime=curtime; g_key[k][0]+=(dt/1000); //如果是首次按下,非连发 if(g_key[k][1]==0) { //如果大于首次连发时间 if(g_key[k][0]>=paifa[ispaifa[k]][0]) { g_key

[k][0]=KEY_DOWN;g_key[k][1]++; //连发次数加一return true;}}//连发else{//如果大于连发时间if(g_key[k][0]>=paifa[ispaifa[k]][1]){g_key[k][0]=KEY_DOWN;g_key[k][1]++;

1 2 3  下一页

Tags:iPhone 方块 游戏

编辑录入:coldstar [复制链接] [打 印]
赞助商链接