cocos2d-x 3.2 |如何在Layer中实现用户触摸
2014-09-08 20:44
274 查看
cocos2d-x 3.2
|如何在Layer中实现用户触摸
前情提要:今天分享一下如何利用cocos2d-x 3.2版本实现用户触摸
cocos2d-x本身已经帮我们把触摸的实现过程和深层原理封装成函数,Layer比Node本身多了触摸属性,
主要实现:移动屏幕上的飞机为最终目的
第一步:新建Game类(逻辑)、飞机类(逻辑)
此处背景、子弹、菜单、敌机暂时忽略
飞机类:Plane.h Plane.cpp
先来定义下飞机用到的方法:Plane.h
第二步:在实现一下我们飞机类的方法:Plane.cpp
第三步:再来定义一个Game类,并实现它的方法
Game类:Game.h Game.cpp
老规矩,先来定义飞机用到的方法:Game.h
其次再来实现飞机的方法:Game.cpp
*touch, Event *unused_event){ this->startX=touch->getLocation().x; this->startY=touch->getLocation().y; return true;}//移动void Game::onTouchMoved(Touch *touch, Event *unused_event){ float mx=touch->getLocation().x-startX; float my=touch->getLocation().y-startY;
auto fly1=(Plane *)this->getChildByTag(10); fly1->moveTo(fly1->px+mx, fly1->py+my); this->startX=touch->getLocation().x; this->startY=touch->getLocation().y;}
总结:Layer中如何实现用户触摸 本章到此结束!希望大家亲自实现一下此功能
|如何在Layer中实现用户触摸
前情提要:今天分享一下如何利用cocos2d-x 3.2版本实现用户触摸
cocos2d-x本身已经帮我们把触摸的实现过程和深层原理封装成函数,Layer比Node本身多了触摸属性,
主要实现:移动屏幕上的飞机为最终目的
第一步:新建Game类(逻辑)、飞机类(逻辑)
此处背景、子弹、菜单、敌机暂时忽略
飞机类:Plane.h Plane.cpp
先来定义下飞机用到的方法:Plane.h
#include <stdio.h> #include "cocos2d.h" using namespace cocos2d; //飞机方法 继承自Node class Plane:public Node { public: CREATE_FUNC(Plane); float px, py; bool init(); void moveTo(int x, int y);//移动后的坐标 };
第二步:在实现一下我们飞机类的方法:Plane.cpp
bool Plane::init() { //初始化方法 if (!Node::init()) { return false; }
//飞机图片 auto fly1=Sprite::create("plane_3.png"); this->addChild(fly1); fly1->setTag(10); return true; } void Plane::moveTo(int x, int y) { this->getChildByTag(10)->setPosition(x,y); this->px=x; this->py=y; }
第三步:再来定义一个Game类,并实现它的方法
Game类:Game.h Game.cpp
老规矩,先来定义飞机用到的方法:Game.h
#include <stdio.h> #include "cocos2d.h" <p class="p1">#include <span class="s1">"Plane.h"</span></p> USING_NS_CC; using namespace cocos2d; class Game:Layer { public: float startX,startY;//起始 X Y 值 CREATE_FUNC(Game); static Scene * CreateScene(); bool init(); virtual bool onTouchBegan(Touch *touch, Event *unused_event); virtual void onTouchMoved(Touch *touch, Event *unused_event); };
其次再来实现飞机的方法:Game.cpp
#include "Game.h"
USING_NS_CC; Scene * Game::CreateScene() { auto scene=Scene::create(); auto layer=Game::create(); scene->addChild(layer); return scene; } bool Game::init() { if (!Layer::init())//Layer初始化当前Game场景 { return false; }
//添加飞机 auto fly1=Plane::create(); this->addChild(fly1,1); fly1->moveTo(100,100); fly1->setTag(10); //控制飞机飞行 auto listener=EventListenerTouchOneByOne::create();//创建侦听 listener->onTouchBegan=CC_CALLBACK_2(Game::onTouchBegan, this);//定义侦听的回调 listener->onTouchMoved=CC_CALLBACK_2(Game::onTouchMoved, this);
<pre name="code" class="cpp"> //将侦听添加到事件分发器中Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); return true;}//按下bool Game::onTouchBegan(Touch
*touch, Event *unused_event){ this->startX=touch->getLocation().x; this->startY=touch->getLocation().y; return true;}//移动void Game::onTouchMoved(Touch *touch, Event *unused_event){ float mx=touch->getLocation().x-startX; float my=touch->getLocation().y-startY;
auto fly1=(Plane *)this->getChildByTag(10); fly1->moveTo(fly1->px+mx, fly1->py+my); this->startX=touch->getLocation().x; this->startY=touch->getLocation().y;}
总结:Layer中如何实现用户触摸 本章到此结束!希望大家亲自实现一下此功能
相关文章推荐
- cocos2d-x 中layer如何实现模态对话框
- Cocos2d-x实现用户触摸的功能
- cocos2d-x 3.2 |如何实现图片显示和精灵动画 Sprite
- 如何实现用户触摸屏幕就隐藏弹出的键盘功能
- cocos2d-x 3.2 |如何实现场景跳转
- cocos2d-x v3.x Lua 中 [cc.Layer] 如何不让触摸事件向下转递
- cocos2d-x 3.2 |如何实现一个贪吃蛇游戏
- [cocos2d-x 3.6]如何实现“侦听触摸事件和侦听按键事件”,触摸回调函数分别在什么情况下执行
- 如何简单实现论坛实时在线用户统计
- 如何实现用户提交编辑的工作
- 如何实现ie禁止返回功能和禁止用户用back space键返回页面(未测试)
- 读取excel, 让用户选出的几个列,将数据导入到sql server,如何实现!
- 技术QA:如何实现服务器或计算机OU上GPO代替用户OU上GPO的用户策略? 推荐
- 如何编程实现删除一个sap的在线用户
- 请教:建立了VSS后,想直接用域用户进行操作,请问如何实现,谢谢.
- VS2005下自定义用户控件 如何实现属性及方法的相关智能提示
- 如何在VC中实现用户自定义消息
- VS2005下自定义用户控件 如何实现属性及方法的相关智能提示
- VS2005下自定义用户控件 如何实现属性及方法的相关智能提示
- 如何实现某些页面只让特定的用户浏览?