0

我正在尝试根据屏幕上的滑动方向移动精灵。到目前为止,这是我根据互联网上的示例提出的代码:

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector]convertToGL:location];
endTouch = location;

float swipeLength = endTouch.x - beginTouch.x;
float swipeY = endTouch.y - beginTouch.y;    

if(swipeY > 0)
{
 if(swipeLength == 0){
 //Do action here
}}}

现在,我的问题是,我需要限制 endTouch.x 范围。例如,它应该大于 100 但小于 150。我只想在向上或以某个角度从 50 到 120 度之间滑动时执行操作,而不是通过侧向或向下滑动。我该如何实施?

4

1 回答 1

1

我在理解你的问题时遇到了一些麻烦。但是,如果您只想向上滑动,您应该执行以下操作:

  1. 得到touchEnd.y - beginTouch.y
  2. 如果结果是否定的,那么它不是向上滑动。
  3. 否则继续计算斜率float slope = (touchEnd.y - touchBegin.y)/(touchEnd.x - touchBegin.x)
  4. 做一个门槛,如果坡度不够陡,那么就方向而言,滑动不是向上而是侧向。if (abs(slope) >= threshold) { //It's an upward swipe }

不确定您要解决的问题:

例如,它应该大于 100 但小于 150。

但是,如果您想限制构成向上滑动的角度,您可以执行以下操作:

  1. 将度数转换为斜率 ( tan(theta)) 查看第二个等式,了解您使用的原因tan(theta)
  2. 因此,如果您希望坡度在 90 +- 30 度范围内:threshold = tan((pi/180)*30)
于 2013-02-18T07:14:57.993 回答