level 10
SDL_TouchID device=SDL_GetTouchDevice(0);
for(int i=0;i<SDL_GetNumTouchFingers(device);++i)
{
SDL_Finger *finger = SDL_GetTouchFinger(device,i);
if(finger!=NULL)
{
multipos[i][0]=finger->x;
multipos[i][1]=finger->y;
}
}
别人的,看不懂,这个有用吗
2017年03月31日 11点03分
3
level 10
SDL_GetTouchDevice(0)
有返回值
为什么
SDL_GetNumTouchFingers(device)
会等于0
2017年03月31日 16点03分
8
level 10
问题解决了,首先感谢贴吧里的大神(不记得是谁了)
多点触屏的作者
2017年04月01日 05点04分
17
level 10
下面是代码
std::vector<SDL_Finger> fingerpos;
//多触屏
void func()
{
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_FINGERDOWN:
{
SDL_Finger finger;
SDL_FingerID index = event.tfinger.fingerId;
finger.id = index;
finger.x = event.tfinger.x;
finger.y = event.tfinger.y;
fingerpos.push_back(finger);
}break;
case SDL_FINGERUP:
{
SDL_FingerID id = event.tfinger.fingerId;
std::vector < SDL_Finger >::iterator it;
for (it = fingerpos.begin(); it != fingerpos.end();)
{
if (it->id == id)
{
fingerpos.erase(it);
it = fingerpos.begin();
}
else
it++;
}break;
}
case SDL_FINGERMOTION:
{
SDL_FingerID id = event.tfinger.fingerId;
for (int i = 0; i < fingerpos.size(); i++)
if (id == fingerpos[i].id)
{
fingerpos[i].x = event.tfinger.x;
fingerpos[i].y = event.tfinger.y;
}
}
}
}
}
2017年04月01日 05点04分
18