Cocos2D-X笔记(3)Touch事件:移动精灵
2013-09-27 22:04
260 查看
接上一节,在GameScene.h中声明:
并在GameScene.cpp的init()中设置:
this->setTouchEnabled(true);
然后在registerWithTouchDispatcher(void)函数中注册Touch事件:
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
完整代码如下:
在触摸的时候,更新精灵的位置。
#pragma once #include "cocos2d.h" USING_NS_CC; class GameScene : public CCLayer { public: GameScene(void); ~GameScene(void); //重写init()方法 virtual bool init(); //必须重写scene方法 static CCScene* scene(); //相当于create函数,重写了CCLayer里的create函数 CREATE_FUNC(GameScene); virtual void registerWithTouchDispatcher(void); virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent); //成员变量 CCSprite* sprite; };
并在GameScene.cpp的init()中设置:
this->setTouchEnabled(true);
然后在registerWithTouchDispatcher(void)函数中注册Touch事件:
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
完整代码如下:
#include "GameScene.h" GameScene::GameScene(void){} GameScene::~GameScene(void){} CCScene* GameScene::scene() { CCScene* scene =CCScene::create(); GameScene* gameScene = GameScene::create(); scene->addChild(gameScene); return scene; } bool GameScene::init() { if(!CCLayer::init()) { return false; } //获取屏幕大小 CCSize size = CCDirector::sharedDirector()->getWinSize(); //从图片创建一个精灵 CCSprite* map = CCSprite::create("bg.png"); //设置精灵在场景中的位置 map->setPosition(ccp(size.width / 2, size.height / 2)); //添加精娄到场景中 this->addChild(map, 0); CCArray* spriteArray = CCArray::createWithCapacity(4); int i; for(i = 0; i < 4; i++) { //截取图片部分 CCSpriteFrame* spriteFrame = CCSpriteFrame::create("lubi.png", CCRectMake(i * 80, 80 * 2, 80, 80)); spriteArray->addObject(spriteFrame); //精精灵添加到场景中,默认第一帧图片 if(i == 0){ sprite = CCSprite::createWithSpriteFrame(spriteFrame); sprite->setPosition(ccp(size.width / 2 - sprite->getContentSize().width, size.height / 2 + sprite->getContentSize().height)); this->addChild(sprite); } } //创建动画 CCAnimation* spriteAnimation = CCAnimation::createWithSpriteFrames(spriteArray, 0.2f); sprite->runAction(CCRepeatForever::create(CCAnimate::create(spriteAnimation))); this->setTouchEnabled(true); return true; } void GameScene::registerWithTouchDispatcher(void) { CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,true); } bool GameScene::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { sprite->setPosition(ccp(pTouch->getLocation().x, pTouch->getLocation().y)); return true; } void GameScene::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent) { } void GameScene::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { } void GameScene::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent) { }
在触摸的时候,更新精灵的位置。
相关文章推荐
- 【Cocos2D-X 游戏引擎】初窥门径(4)Touch 事件:移动精灵
- COCOS2D-X 2.0笔记---2:精灵类,动画类,精灵缓存,shcedule,touch事件
- 【Cocos2D-X 游戏引擎】初窥门径(4)Touch 事件:移动精灵
- Cocos2d-X 学习笔记 22 CCLayer 界面Touch事件处理
- (转)cocos2d-x学习笔记(三)让精灵按照自己设定的运动轨迹行动(曲线移动)。(以椭圆轨迹为例)
- Cocos2d-x学习笔记(九)-------->Touch事件处理机制
- ios-cocos2d游戏开发基础-CCLayer和Touch事件-开发笔记
- Cocos2d-x学习笔记(三) —— 如何移动精灵
- cocos2d-x 2.X demo学习笔记 6 ----ClickAndMoveTest 触摸事件和移动
- cocos2d-x项目101次相遇:使用触摸事件移动 精灵
- cocos2d-x项目101次相遇:使用触摸事件移动 精灵
- Cocos2D-X2.2.3学习笔记8(处理精灵单击、双击和三连击事件)
- cocos2d-x项目101次相遇:使用触摸事件移动 精灵
- cocos2d-x学习笔记(三)让精灵按照自己设定的运动轨迹行动(曲线移动)。(以椭圆轨迹为例)。
- cocos2d-x项目101次相遇:使用触摸事件移动 精灵
- Cocos2D-X2.2.3学习笔记8(处理精灵单击、双击和三连击事件)
- cocos2d-x学习笔记(三)让精灵按照自己设定的运动轨迹行动(曲线移动)。(以椭圆轨迹为例)。
- cocos2d-x初学笔记06:触屏事件TouchEvent
- cocos2d-x学习笔记(三)让精灵按照自己设定的运动轨迹行动(曲线移动)。(以椭圆轨迹为例)。
- cocos2d-x Touch 移动精灵