文档章节

cocos2d-x 摇杆(一)

BingzhaoChen
 BingzhaoChen
发布于 2015/06/22 22:25
字数 263
阅读 28
收藏 0
点赞 0
评论 0


Control.h

#ifndef _CONTROL_H_
#define _CONTROL_H_
#include "cocos2d.h"
USING_NS_CC;
class Control : public cocos2d::CCLayer
{
public:
	virtual bool init();
	CREATE_FUNC(Control);
	virtual void onEnter();
	virtual void onExit();
	virtual bool ccTouchBegan(CCTouch* touch,CCEvent* event);
    virtual void ccTouchMoved(CCTouch* touch,CCEvent* event);
    virtual void ccTouchEnded(CCTouch* touch,CCEvent* event);
private:
	CCSize visibleSize; //可视窗口大小
	CCSprite* control_bg;
	CCSprite* cen;
	void initData();
	bool isOnControl;
	CCPoint origin; //摇杆中心点
	float r_control;
};
#endif
#include"Control.h"
USING_NS_CC;
bool Control::init()
{
	if (!CCLayer::init())
	{
		return false;
	}
	initData();
	return true;
}
void Control::initData()
{
	origin = ccp(150, 150);  //摇杆原点	
	control_bg = CCSprite::create("dpadUp.png");
	control_bg->setPosition(origin);
	control_bg->setScale(2);
	this->addChild(control_bg);
	cen = CCSprite::create("joystickUp.png");
	cen->setPosition(origin);
	this->addChild(cen);
	CCRect r = control_bg->boundingBox();
	r_control = (r.getMaxX()-r.getMinX())/2; //摇杆半径
}
void Control::onEnter()
{
	CCLayer::onEnter();
	CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);
}
bool Control::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
	if (cen->boundingBox().containsPoint(touch->getLocation()))
	{
		isOnControl = true;
		cen->setScale(1.1);
	}
	return true;
}
void Control::ccTouchMoved(CCTouch* touch, CCEvent* event)
{
	if (isOnControl)  
	{
		CCPoint p_touch = touch->getLocation();
		float distance = sqrt((p_touch.x - origin.x)*(p_touch.x - origin.x)+(p_touch.y - origin.y)*(p_touch.y - origin.y)); //触摸点和摇杆起点的距离
		if (distance <= r_control)
		{
			cen->setPosition(touch->getLocation());
			cen->setScale(1.1);
		}
		else
		{
			float x = r_control/distance * (p_touch.x - origin.x)+origin.x;
			float y = r_control/distance * (p_touch.y - origin.y)+origin.y;
			cen->setPosition(ccp(x, y));
			cen->setScale(1.1);
		}
	}
	else
	{
		//do nothing
	}
}
void Control::ccTouchEnded(CCTouch* touch, CCEvent* event)
{
	isOnControl = false;
	cen->setPosition(origin);
	cen->setScale(1);
}
void Control::onExit()
{
	CCDirector::sharedDirector()->getTouchDispatcher()->removeAllDelegates();
	CCLayer::onExit();
}


© 著作权归作者所有

共有 人打赏支持
BingzhaoChen
粉丝 1
博文 5
码字总数 2031
作品 0
珠海
EasyTouch的使用(一)

情景: 用unity开发游戏的时候,有时候想控制物体移动,但是发现做按钮太麻烦了,就想着又没有插件可以用,后来发现了easytouch,发现挺不错的,就拿过来用了,这里分享一下easytouch的使用吧...

月夜中徘徊
05/15
0
0
【Android游戏开发二十四】360°平滑游戏摇杆(触屏方向导航)

李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/384.html , 此章节为正在创作的游戏开发书籍中的一部分,由于写书的缘...

迷途d书童
2012/03/19
0
0
Easy Touch Controls 组件运用

ETC(Easy Touch Controls)控件集中有两种类型的Joystick:Static(静态的):摇杆将会出现在你预先设定好的地方。Dynamic(动态的):摇杆将会出现在你触碰到屏幕的地方。你也可以强制...

牛子威
2017/12/07
0
0
cocos2d-x 摇杆(二)

根据上一篇内容进行改进 Control.h 增加以下内容 CCSprite* main_tank;void control_update(float dt); Control.cpp void Control::control_update(float dt){float move_x=cen->getPositio......

BingzhaoChen
2015/06/22
0
0
Mogoson/MGS-Handle

MGS-Handle English Manual 概述 Unity制作按钮开关,旋钮开关,摇杆手柄插件包。 环境 Unity 5.0 或更高版本。 .Net Framework 3.0 或更高版本。 方案 控制按钮开关Z轴向位移表现其按下,自...

Mogoson
2017/04/16
0
0
手游开发神器 cocos2d-x editor 教程聚合和代码下载(持续更新中)

一 cocos2d-x editor工具下载和基础教程: 一 手游开发神器 cocos2d-x editor初识 二 手游开发神器 cocos2d-x editor工具下载和安装配置 三 手游开发神器 cocos2d-x editor 之基础工具 inte...

makeapp628
2014/02/11
0
0
在pcDuino上摇杆控制贪吃蛇游戏

最近一直在玩pcDuino,苦恼于各种程序。。。好吧,玩玩趣味性的游戏我觉的是个不错的想法,可是pcDuino上貌似还没有可玩的小游戏,试试移植一个?犹豫片刻决定动手,首先就想到经典游戏贪吃蛇...

pc朵拉
2013/07/01
1K
2
为回馈广大学员,智捷课堂买关老师Cocos2d-x课程送Cocos2d-x图书

为回馈广大学员,智捷课堂买关老师Cocos2d-x课程送Cocos2d-x图书 一、凡购买如下课程送一本图书: 1、 Cocos2d-x入门与提高视频教程Part 2 2、 Cocos2d-x数据持久化与网络通信Part 3 3、 Co...

tony关东升
06/29
0
0
unity3D分别用NGUI和UGUI做简易的虚拟摇杆

虚拟摇杆主要是开发移动端的游戏用的,市面上这样的游戏有很多,大家也都见过或者玩过了,在这给大家介绍两种不同的简易方法制作虚拟摇杆。 一、NGUI做虚拟摇杆 1.首先 将NGUII插件导入Unity...

weixin_41881186
05/04
0
0
cocos2d-x支持c++、js、lua开发

作者:左文 链接:https://www.zhihu.com/question/21130385/answer/21789568 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 纯属个人观点 1 Unity3d支...

壹峰
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java集合元素的默认大小

当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使...

竹叶青出于蓝
5分钟前
1
0
Java快速开发平台,JEECG 3.7.7闪电版本发布,增加多套主流UI代码生成器模板

JEECG 3.7.7 闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升 ⊙提供5套新的主流UI代码生成器模板(Bootstrap表单+BootstrapTable列表\ ElementUI列表表单)...

Jeecg
8分钟前
0
0
export 和 module.export 的区别

在浏览器端 js 里面,为了解决各模块变量冲突等问题,往往借助于 js 的闭包把左右模块相关的代码都包装在一个匿名函数里。而 Nodejs 编写模块相当的自由,开发者只需要关注 require,exports,...

孟飞阳
11分钟前
0
0
技术教育的兴起

技术教育的兴起 作者: 阮一峰 1、 有一年,我在台湾环岛旅行。 花莲的海边,我遇到一对台湾青年夫妻,带着女儿在海滩上玩。我们聊了起来。 当时,我还在高校当老师。他们问我,是否觉得台湾...

吕伯文
11分钟前
0
0
Linux服务器下的HTTP抓包分析

说到抓包分析,最简单的办法莫过于在客户端直接安装一个Wireshark或者Fiddler了,但是有时候由于客户端开发人员(可能是第三方)知识欠缺或者其它一些原因,无法顺利的在客户端进行抓包分析,...

mylxsw
15分钟前
0
0
mybatis3-javaapi

sqlSessionFactoryBuilder->sqlSessionFactory->sqlSession<-rowbound<-resultHandler myBatis uses a Java enumeration wrapper for transaction isolation levels, called TransactionIsol......

writeademo
19分钟前
0
0
Java NIO:浅析I/O模型

也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念...

yzbty23
19分钟前
0
0
了解iOS消息推送一文就够:史上最全iOS Push技术详解

本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表。 1、引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ、微信等IM界面处于前台时,聊天消息和指令都会...

JackJiang-
21分钟前
0
0
Mysql汉子转拼音

update t_app_city SET CITY_NAME_BEGIN = ELT(INTERVAL(CONV(HEX(LEFT(CONVERT(CITY_NAME USING gbk),1)),16,10), 0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7, 0xBFA......

尘叙缘
23分钟前
0
0
大数据构建智慧城市“新引擎”,加速推进新旧动能转换

——“大数据与智慧城市”技术交流分享会——济南站召开 7月13日,“大数据携手智慧城市,助力山东新旧动能转换”技术交流分享会——济南站在山东信息通信技术研究院会议室成功举办,此次会议...

左手的倒影
24分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部