【问题标题】:double tap in cocos2d在 cocos2d 中双击
【发布时间】:2013-02-13 23:20:48
【问题描述】:

我正在尝试使用 cocos2d 开发游戏。我现在卡住了。我不知道如何检测双击事件,就像 windows 中的双击一样。我尝试使用

NSArray * allTouches = [touches allObjects];
int count = [allTouches count];

ccTouchesEnded

但这似乎在同时发生双重触摸时起作用。我想要它在 Windows 中的样子。

谁能给我一些想法? 提前致谢。

【问题讨论】:

标签: cocoa-touch cocos2d-iphone


【解决方案1】:

如果您使用targetedTouchDelegate,您可以这样做:

- (void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
    if(touch.tapCount==1) MPLOG(@"ONE TAP");
    if(touch.tapCount==2) MPLOG(@"TWO TAPS");
    return;
}

当双击发生时,您将获得两次触摸,即,当双击时,这将记录“ONE TAP”和“TWO TAPS”。由你来弄清楚你的状态并做你的事。

【讨论】:

  • 你是个传奇。多么棒的解决方案。谢谢。
【解决方案2】:

你说的是像 mac 和 windows 中的多点触控 2 指点击或双击?

如果是在mac和windows中双击,那么这里是解决方案。

你可以通过两种方式做到这一点。

  1. 使用 UITapGestureRecognizer(设置为检测双击)LearnCocos2D 在此question 中建议。

  2. 通过使用时间差来使用手动双击跟踪。

//在接口文件中声明这个

 NSTimeInterval      mLastTapTime;

在实现文件中:

-(id)init
{
    if(self = [super init])
    {
         mLastTapTime = [NSDate timeIntervalSinceReferenceDate];
    }
    return self;
}

//在触摸方式中

NSTimeInterval currentTime = [NSDate timeIntervalSinceReferenceDate];
NSTimeInterval diff = currentTime - mLastTapTime;

if(diff < 0.5 ) //0.5 or less
{
     //double tap
}

mLastTapTime = [NSDate timeIntervalSinceReferenceDate];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多