如何在 Cocos2d CCLayer 中添加摇动手势?

Posted

技术标签:

【中文标题】如何在 Cocos2d CCLayer 中添加摇动手势?【英文标题】:How Can I add Shake Gesture in Cocos2d CCLayer? 【发布时间】:2012-08-23 13:02:52 【问题描述】:

我尝试使用shake Gesture Recognition wrapper 来检测摇晃手势。 我还尝试实现Geeky Lemon 中建议的代码。 但我无法处理摇晃手势。有什么方法可以识别摇晃手势吗?

谢谢!

编辑 1:

代码是在摇动手势识别包装演示的帮助下完成的。

在初始化方法中

ShakeDispatcher * dispatcher = [ShakeDispatcher sharedInstance];
[dispatcher addShakeListener:self];    
[[[CCDirector sharedDirector]view] addGestureRecognizer:dispatcher];

-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event   
    if ( event.subtype == UIEventSubtypeMotionShake )      
        NSLog(@"Shake detected");   
     

【问题讨论】:

【参考方案1】:

以正常方式创建您的手势识别器,然后像这样添加它

[[[CCDirector sharedDirector] view] addGestureRecognizer:shakeGesture];

【讨论】:

【参考方案2】:

您必须使用ShakeEnabledUIWindow 而不是UIWindow。在您的AppDelegate 中,您需要导入文件并且需要为该窗口创建实例,例如

#import "ShakeEnabledUIWindow.h"

然后为ShakeEnabledUIWindow创建实例

@property (strong, nonatomic) ShakeEnabledUIWindow *window;

现在它可以工作了。试试这些link 来实现你的Shake Gesture

【讨论】:

以上是关于如何在 Cocos2d CCLayer 中添加摇动手势?的主要内容,如果未能解决你的问题,请参考以下文章

Cocos2D:如何在不同类之间发送事件

如何解除分配 CCLayer

如何在 cocos2D 应用程序中拍照(iOS 6)

iPhone OpenGL ES 2.0 与 Cocos2D 的混合产生了意想不到的结果

cocos2d学习笔记

cocos2d-3.x 创建动画