微动博客 >> 示例程序 >> C++ >> 手指敲击选定按钮

手指敲击选定按钮

Vidoo 2015-10-26
浏览次数143

比悬停按键更常用的是使用tap的手势来触发按钮事件,微动提供了tap的动态手势和finger对象的cursor属性,每次tap我们都可以靠他们准确的得知我们做出了对准屏幕什么位置的tap,如果此处正巧有个按钮在,就可以利用程序告诉计算机我已经把按钮按下去了。这个方法与悬停按键相比各有优缺点,此方法比较适合开发需要快速响应的程序,例如我们要在游戏中完成射击(射击与按下按钮的操作是很相似的)
首先声明与定义需要用到的frame和finger对象,代码如下:

const sharpnow::Frame* frame = sdk.GetFrameInfo();
const sharpnow::Finger* finger;
sdk.RetrieveFrame(0);
frame = sdk.GetFrameInfo();
finger = sdk.GetFinger(frame->finger_focused,0);

与使用悬停相似,同样定义底座与主体两个对象:

ObjectLow;//底座
ObjectHigh;//按钮主体

将触发条件设置为finger对象的tap标识为true,每一帧都会更新tap数据,在用户做出tap动作的那一帧,就可以触发按钮的动画效果并触发按钮需要响应的事件,代码如下:

if (finger->tap){
for (int i=0;i<H;i++){//H为需要移动的高度(像素值)
ObjectHigh ->Location = Point(ObjectHigh ->Location.X, 1+ ObjectHigh ->Location.Y);
}
ObjectHigh ->Image=pushedImage; //更换图像,一般可设置为高亮,表示按钮此时已经被按下
………………………………………….. //此处可以定义按钮按下所触发的事件
for (int i=0;i<H;i++){
ObjectHigh ->Location = Point(ObjectHigh ->Location.X, ObjectHigh ->Location.Y-1);
}

用户也可以按照自身程序的需要将悬停与敲击两种方法相结合触发按钮效果。

上篇文章:
下篇文章: