cocos2d-x 注册iOS自带手势识别
2011-11-11 20:53
344 查看
猴子原创,转载请注明出处。谢谢!
原文地址:http://blog.csdn.net/yanghuiliu/article/details/6961048
现在项目中有涉及到手势识别的,其实我们可以直接利用ios自带的手势识别系统帮我们来识别。
看看实现:
我们要实现手势的类的头文件:
#include"GTGestureProtocol.h"
#include"RootViewController.h"
#include"FMGBGameData.h"
class GTLevelMenu :publiccocos2d::CCLayer,publicGTGestureProtocol{
private:
virtualvoid GTGestureTrigger(GTGestureDir dir);
};
在cpp中init方法中将自己传到RootViewController中。
RootViewController *root= (RootViewController*)(FMGBGameData::sharedFMGBGameData()->appRootViewController);
root.delegate=this;
使用的时候:
voidGTLevelMenu::GTGestureTrigger(GTGestureDir dir)
{
//dir就是下面枚举的几个方向
}
不相关的代码我就不列出来了。
这里是一个layer,我想实现在这个layer上面实现手势监听。
GTGestureDir是一个代理,给iOS手势识别使用。GTGestureDir的实现:
typedefenum GTGestureDir
{
GTGestureDirNONE = 0,
GTGestureDirUP,
GTGestureDirDOWN,
GTGestureDirLEFT,
GTGestureDirRIGHT,
}GTGestureDir;
class GTGestureProtocol
{
public:
virtualvoid GTGestureTrigger(GTGestureDir dir){};
};
#endif
下面修改如何从ios手势识别中返回结果:
在iOS目录下修改RootViewController.h。加入我们的代理类
//
//
// Created by Yanghui Liu on 11-10-14.
// Copyright company 2011年. All rights reserved.
//
#import<UIKit/UIKit.h>
#include"GTGestureProtocol.h"
@interface RootViewController :UIViewController {
GTGestureProtocol * delegate_;
}
@property (nonatomic,assign)GTGestureProtocol
* delegate;
@end
在RootViewController.mm中加入下面的手势识别:
-(void)handleGesture:(UISwipeGestureRecognizer *)recognizer {
if (recognizer.direction==UISwipeGestureRecognizerDirectionDown)
{
if (delegate_) {
delegate_->GTGestureTrigger(GTGestureDirDOWN);
}
}
elseif(recognizer.direction==UISwipeGestureRecognizerDirectionUp)
{
if (delegate_) {
delegate_->GTGestureTrigger(GTGestureDirUP);
}
}
elseif(recognizer.direction==UISwipeGestureRecognizerDirectionLeft)
{
if (delegate_) {
delegate_->GTGestureTrigger(GTGestureDirLEFT);
}
}
elseif(recognizer.direction==UISwipeGestureRecognizerDirectionRight)
{
if (delegate_) {
delegate_->GTGestureTrigger(GTGestureDirRIGHT);
}
}
}
最后还有一个单例返回的类没实现:
头文件
class FMGBGameData :publicCCObject {
public:
virtualbool init(void);
virtual ~FMGBGameData(void);
FMGBGameData(void);
/**单例FMGameApiRequest */
staticFMGBGameData* sharedFMGBGameData(void);
};
单例实现cpp
staticFMGBGameDatas_sharedData;
staticbool bFirstRun =true;
FMGBGameData::~FMGBGameData(void) {
}
FMGBGameData::FMGBGameData(){
}
FMGBGameData*FMGBGameData::sharedFMGBGameData(void) {
if (bFirstRun)
{
s_sharedData.init();
bFirstRun =false;
}
return &s_sharedData;
}
原文地址:http://blog.csdn.net/yanghuiliu/article/details/6961048
现在项目中有涉及到手势识别的,其实我们可以直接利用ios自带的手势识别系统帮我们来识别。
看看实现:
我们要实现手势的类的头文件:
#include"GTGestureProtocol.h"
#include"RootViewController.h"
#include"FMGBGameData.h"
class GTLevelMenu :publiccocos2d::CCLayer,publicGTGestureProtocol{
private:
virtualvoid GTGestureTrigger(GTGestureDir dir);
};
在cpp中init方法中将自己传到RootViewController中。
RootViewController *root= (RootViewController*)(FMGBGameData::sharedFMGBGameData()->appRootViewController);
root.delegate=this;
使用的时候:
voidGTLevelMenu::GTGestureTrigger(GTGestureDir dir)
{
//dir就是下面枚举的几个方向
}
不相关的代码我就不列出来了。
这里是一个layer,我想实现在这个layer上面实现手势监听。
GTGestureDir是一个代理,给iOS手势识别使用。GTGestureDir的实现:
typedefenum GTGestureDir
{
GTGestureDirNONE = 0,
GTGestureDirUP,
GTGestureDirDOWN,
GTGestureDirLEFT,
GTGestureDirRIGHT,
}GTGestureDir;
class GTGestureProtocol
{
public:
virtualvoid GTGestureTrigger(GTGestureDir dir){};
};
#endif
下面修改如何从ios手势识别中返回结果:
在iOS目录下修改RootViewController.h。加入我们的代理类
//
//
// Created by Yanghui Liu on 11-10-14.
// Copyright company 2011年. All rights reserved.
//
#import<UIKit/UIKit.h>
#include"GTGestureProtocol.h"
@interface RootViewController :UIViewController {
GTGestureProtocol * delegate_;
}
@property (nonatomic,assign)GTGestureProtocol
* delegate;
@end
在RootViewController.mm中加入下面的手势识别:
-(void)handleGesture:(UISwipeGestureRecognizer *)recognizer {
if (recognizer.direction==UISwipeGestureRecognizerDirectionDown)
{
if (delegate_) {
delegate_->GTGestureTrigger(GTGestureDirDOWN);
}
}
elseif(recognizer.direction==UISwipeGestureRecognizerDirectionUp)
{
if (delegate_) {
delegate_->GTGestureTrigger(GTGestureDirUP);
}
}
elseif(recognizer.direction==UISwipeGestureRecognizerDirectionLeft)
{
if (delegate_) {
delegate_->GTGestureTrigger(GTGestureDirLEFT);
}
}
elseif(recognizer.direction==UISwipeGestureRecognizerDirectionRight)
{
if (delegate_) {
delegate_->GTGestureTrigger(GTGestureDirRIGHT);
}
}
}
最后还有一个单例返回的类没实现:
头文件
class FMGBGameData :publicCCObject {
public:
virtualbool init(void);
virtual ~FMGBGameData(void);
FMGBGameData(void);
/**单例FMGameApiRequest */
staticFMGBGameData* sharedFMGBGameData(void);
};
单例实现cpp
staticFMGBGameDatas_sharedData;
staticbool bFirstRun =true;
FMGBGameData::~FMGBGameData(void) {
}
FMGBGameData::FMGBGameData(){
}
FMGBGameData*FMGBGameData::sharedFMGBGameData(void) {
if (bFirstRun)
{
s_sharedData.init();
bFirstRun =false;
}
return &s_sharedData;
}
相关文章推荐
- cocos2d-x 注册iOS自带手势识别
- 介绍一些实用的IOS手势识别库 (COCOS2D)
- 【iOS-cocos2d-X 游戏开发之五】游戏存储之Cocos2dX自带CCUserDefault类详解;
- 【iOS-cocos2d-X 游戏开发之三】Mac下配置Android NDK环境并搭建Cocos2d-x环境并Eclipse正常编译运行Cocos2dX自带TestsDemo项目!
- IOS 手势识别教程:二指拨动、拖移以及更多手势
- 总结iOS开发中的手势识别
- iOS开发之手势识别
- 转发:iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
- IOS 手势识别
- IOS 旋转+缩放(手势识别)
- IOS 5手势识别教程:二指拨动、拖移以及更多手势
- iOS_触摸事件与手势识别
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
- iOS各种手势识别
- 【cocos2D-x学习】17.手势识别
- iOS:触摸事件、手势识别、摇晃事件、耳机线控
- iOS开发--触摸事件、手势识别、摇晃事件、耳机线控
- ios手势识别的几个问题
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控