cocos::触摸跟随移动
来源:互联网 发布:苹果的c语言编程软件 编辑:程序博客网 时间:2024/05/17 07:51
#pragma once#ifndef __CONTROLL_MOVE_H_#define __CONTROLL_MOVE_H_#include "cocos2d.h"USING_NS_CC;class ControllMoveLayer :public Layer{public :CREATE_FUNC(ControllMoveLayer);bool init();void setPlayer(Node *player);private:void update(float dt);bool onTouchBegan(Touch *touch, Event *unused_event);void onTouchCancelled(Touch *touch, Event *unused_event);void onTouchMoved(Touch *touch, Event *unused_event);void onTouchEnded(Touch *touch, Event *unused_event);float mDeltaX;float mDeltaY;Node *mPlayer;bool isControlled;};#endif
#include "ControllMoveLayer.h"bool ControllMoveLayer::init() {if (!Layer::init()) {return false;}mPlayer = NULL;mDeltaX = 0;mDeltaY = 0;isControlled = false;scheduleUpdate();return true;}void ControllMoveLayer::setPlayer(Node *player) {if (mPlayer != NULL) {removeChild(player);CC_SAFE_DELETE(player);}mPlayer = player;addChild(player);auto listeScene = EventListenerTouchOneByOne::create();listeScene->onTouchBegan = CC_CALLBACK_2(ControllMoveLayer::onTouchBegan, this);listeScene->onTouchCancelled = CC_CALLBACK_2(ControllMoveLayer::onTouchCancelled, this);listeScene->onTouchMoved = CC_CALLBACK_2(ControllMoveLayer::onTouchMoved, this);listeScene->onTouchEnded = CC_CALLBACK_2(ControllMoveLayer::onTouchEnded, this);Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listeScene, this);}void ControllMoveLayer::update(float dt) {if (mPlayer == NULL) {return;}}bool ControllMoveLayer::onTouchBegan(Touch *touch, Event *unused_event) {auto playerBox = mPlayer->getBoundingBox();auto touchPos = Director::getInstance()->convertToGL(touch->getLocationInView());if (playerBox.containsPoint(touchPos)) {isControlled = true;auto playerPos = mPlayer->getPosition();mDeltaX = touchPos.x - playerPos.x;mDeltaY = touchPos.y - playerPos.y;return true;}return true;}void ControllMoveLayer::onTouchCancelled(Touch *touch, Event *unused_event) {isControlled = false;}void ControllMoveLayer::onTouchMoved(Touch *touch, Event *unused_event) {if (isControlled) {Point mMovedPos = touch->getLocationInView();mMovedPos = Director::getInstance()->convertToGL(mMovedPos);Size visibleSize = Director::getInstance()->getVisibleSize();Point origin = Director::getInstance()->getVisibleOrigin();//記得減去偏移量 float x = mMovedPos.x - mDeltaX;float y = mMovedPos.y - mDeltaY;//x到达屏幕左边界 if (x <= mPlayer->getContentSize().width / 2 + origin.x)x = mPlayer->getContentSize().width / 2 + origin.x;//x到达屏幕右边界 else if (x >= visibleSize.width - mPlayer->getContentSize().width / 2)x = visibleSize.width - mPlayer->getContentSize().width / 2;//y到达屏幕下边界 if (y <= mPlayer->getContentSize().height / 2 + origin.y)y = mPlayer->getContentSize().height / 2 + origin.y;//x到达屏幕上边界else if (y >= visibleSize.height - mPlayer->getContentSize().height / 2)y = visibleSize.height - mPlayer->getContentSize().height / 2;//飞机跟随手指移动 mPlayer->setPosition(Point(x, y));}}void ControllMoveLayer::onTouchEnded(Touch *touch, Event *unused_event) {isControlled = false;}
0 0
- cocos::触摸跟随移动
- cocos触摸
- Sprite添加触摸监听(实现跟随手指移动)
- cocos 触摸机制
- COCOS-单点触摸
- COCOS-多点触摸
- Cocos单点触摸
- cocos 动画 触摸事件
- cocos-js触摸事件
- Android 自定义View控件,实现跟随手指触摸移动的小球
- 触摸移动
- cocos lua 3.0 触摸事件
- cocos creator 触摸捕捉事件
- cocos lua 注册触摸事件
- 层跟随鼠标移动
- 人物跟随鼠标移动
- UITextField跟随键盘移动
- 镜头跟随GameObject移动。
- 深入理解Objective-C:Category(下)
- SAS学习笔记:添加超链接
- scala教程
- C++指针理解《一》
- 以模块化视角看卷积神经网络Conv Nets: A Modular Perspective
- cocos::触摸跟随移动
- Car accident on 24th Feb. 2016
- 第5周项目2 游戏角色(析构函数)
- ccf+欧拉回路和dfs判断无向图的连通性+这里知道了bool标记visit以及vector和前向星存图
- Centos6.5安装intel fortran compiler
- Git简单教程
- 一些算法Fanfiction, Graphs, and PageRank
- leetcode:Maximum Product of Word Lengths
- objective-c 第五天 类 对象 方法