新手上路
- 积分
- 31
- 金钱
- 31
- 注册时间
- 2016-4-18
- 在线时间
- 26 小时
|
10金钱
基于原子哥给的综合测试用例中主屏幕的左右滑,改了下数码相框中图片显示为左右滑动,但是效果不是很尽人意,感觉好不流畅,有时要滑两三下才能切换图片,求大神看看是不是代码问题。u8 pic_tp_scan(void){
u8 res=0;
u16 movecnt=0;
//u8 skips=10;
tp_dev.scan(0);
if(tp_dev.sta&TP_PRES_DOWN)//有按键按下
{
if(spbdev.spbsta&0X8000)//已经被标记
{
movecnt=spbdev.spbsta&0X3FFF;//得到滑动点数
if(gui_disabs(spbdev.curxpos,tp_dev.x[0])>=SPB_MOVE_WIN)//移动大于等于SPB_MOVE_WIN个点
{
if(movecnt<SPB_MOVE_MIN/SPB_MOVE_WIN)spbdev.spbsta++;//点数增加1
}
}
spbdev.curxpos=tp_dev.x[0]; //记录当前x坐标
spbdev.curypos=tp_dev.y[0]; //记录当前y坐标
if((spbdev.spbsta&0X8000)==0) //案件第一次被按下
{
if(spbdev.curxpos>4096||spbdev.curypos>4096)return 0XFF;//数据非法
spbdev.spbsta=0; //状态初始化
spbdev.spbsta|=1<<15; //标记按下
spbdev.oldxpos=tp_dev.x[0]; //记录按下的坐标
}else if(spbdev.spbsta&0X4000) //有滑动
{
if(spbdev.oldxpos>tp_dev.x[0]) //x左移,下一张图片
{
res=3;
}else //x右移,上一张
{
res=1;
}
spbdev.oldxpos=tp_dev.x[0];
}else if((gui_disabs(spbdev.curxpos,spbdev.oldxpos)>=SPB_MOVE_MIN)&&(movecnt>=SPB_MOVE_MIN/SPB_MOVE_WIN))//检测滑动距离
{
spbdev.spbsta|=1<<14;//标记滑动
}
}else //按键松开
{
if(spbdev.spbsta&0x8000)//之前有按下
{
if(spbdev.spbsta&0X4000)//有滑动
{
/*if(spbdev.pos>SPB_MOVE_ACT)
{
res=3;
}else
{
res=1;
}*/
if(spbdev.oldxpos>tp_dev.x[0]) //左滑
{
res=3;
}else //右滑
{
res=1;
}
/*spb_unsel_micos(spbdev.selico);
spbdev.selico=0xff; */
spbdev.spbsta=0; //状态初始化
}
}
}
while(res)//等待按键松开
{
tp_dev.scan(0);
if((tp_dev.sta&TP_PRES_DOWN)==0)break;
delay_ms(1);
}
return res;
}
|
|