ClickAndMoveTest
关于ccTouchesEnded看这个博客即可
http://blog.linguofeng.com/archive/2012/09/12/cocos2d-x-touch.html
class ClickAndMoveTestScene : public TestScene
{
public:
virtual void runThisTest();
}; class MainLayer : public CCLayer
{
public:
MainLayer();
virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);
};
void ClickAndMoveTestScene::runThisTest()
{
//创建目标图层
CCLayer* pLayer = new MainLayer();
pLayer->autorelease();
//添加图层
addChild(pLayer);
//替换场景,让改场景为运行时场景
CCDirector::sharedDirector()->replaceScene(this);
}
//目标图层类的构造函数
MainLayer::MainLayer()
{
//开启多点触控
setTouchEnabled(true); CCSprite* sprite = CCSprite::create(s_pPathGrossini);
//设置背景颜色
CCLayer* layer = CCLayerColor::create(ccc4(,,,));
addChild(layer, -); addChild(sprite, , kTagSprite);
sprite->setPosition( ccp(,) );
//对精灵做动作,这里精灵和背景层不在同一树种
sprite->runAction( CCJumpTo::create(, ccp(,), , ) );
//对背景层做动作,1.淡进,2.淡出,重复执行这两个动作
layer->runAction( CCRepeatForever::create(
(CCActionInterval*)( CCSequence::create(
CCFadeIn::create(),
CCFadeOut::create(),
NULL) )
) );
}
//处理松开事件
void MainLayer::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)
{
//获取第一个点
CCSetIterator it = pTouches->begin();
CCTouch* touch = (CCTouch*)(*it); CCPoint location = touch->getLocation(); CCNode* s = getChildByTag(kTagSprite);
//停止所有动作
s->stopAllActions();
//向该点移动
s->runAction( CCMoveTo::create(, ccp(location.x, location.y) ) );
//计算精灵的旋转角度,要让头部向着移动方向
float o = location.x - s->getPosition().x;
float a = location.y - s->getPosition().y;
//先通过atoanf 计算出反正弦弧度值,然后通过宏转换成角度值
float at = (float) CC_RADIANS_TO_DEGREES( atanf( o/a) );
//在Cocos2D-x中,顺时针为正,逆时针为负
if( a < )
{
if( o < )
at = + fabs(at);//为什么这里是180在纸上画一下就明白了
else
at = - fabs(at);
}
//执行旋转动作
s->runAction( CCRotateTo::create(, at) );
}
ClickAndMoveTest的更多相关文章
- Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)
Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中点击移动的样例,在这个样例你能够得到怎样创建单点触 ...
- quick-cocos2d-x之testlua之mainMenu.lua
require "helper" require "testResource" require "ActionsTest.ActionsTest&qu ...
- 按 Eclipse 开发喜好重新布置 cocos2dx 目录层次
[tonyfield 2013.08.29 ] 1. Cocos2dx 库的改动 处于个人的固执,花一天时间重新布置了cocos2dx 2.1.4的目录层次,将android平台无关的代码全数裁剪, ...
- Cocos2d-x 3.1.1 lua-tests 开篇
Cocos2d-x 3.1.1 lua-tests开篇 本篇博客打算从研究Cocos2d-x引擎提供的測试样例来写起,笔者针对Cocos2d-x 3.1.1这个版本号来介绍怎样来学习它给我们提供的 ...
- Cocos2d-x学习笔记(20)(TestCpp源代码分析-4)
本章主要介绍testResource.h与tests.h,当中tests.h主要是存放全部用到的头文件.与菜单相相应的宏定义以及菜单数组,testResource.h主要用是资源文件定义. //tes ...
随机推荐
- UILabel字体间距调整
思路: 写一个 UILbel的子类:在子类里面重新布置UILbel的字体间距: 如代码 .h #import <UIKit/UIKit.h> @interface AdjustableUI ...
- request.getSession().setAttribute("",..)和request.setAttribute("",...)的差别
request.getSession.setAttribute()是获得当前会话的session,然后再setAttribute到session里面去,有效范围是session而不是request. ...
- 在VC中创建DLL文件的方法步骤
一.Win32动态链接库 1.制作的步骤: (1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A simple DLL project类型. (2)MyDll ...
- linux安装JDK环境,JDK6.0即java 1.6.0
下载 (1)更改权限:# chmod 755 jdk-1.6.0_23-linux-i586.rpm.bin 执行安装:# ./ jdk-1.6.0_23-linux-i586.rpm.bin 此步完 ...
- Redis学习(2)-redis安装
安装redis需要先从官网下载的源码进行编译,编译依赖GCC环境,如果没有GCC环境,需要安装GCC. yum install gcc-c++ 步骤1:上传 将Windows下下载的压缩文件上传Lin ...
- 解决a标签IE下点击后出现轮廓框
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ribbon区域亲和配置一例
只需在springboot的配置文件中添加以下内容即可: eureka.instance.metadata-map.zone=left 该配置是一个eureka客户端的配置,并且该客户端使用了ribb ...
- highstock K线图 深入研究
K线图,相信每个股民都不陌生,如何用SVG画好一个K线图是一个难题. 我选择用highstock做为画图组件,适当的修改了一下源码,参考了数个财经网站的案例,完成了一个不太成熟的K线图,欢迎大家批评指 ...
- 关于 while(1)和for(;;)效率问题的一点想法
这几天看到好友的文章关于while(1)和for(;;)效率的讨论,手痒说了两句.回头一寻思,自己也仅仅是判断.没有做不论什么实验,我们就看看这两种写法究竟有什么差别: 实验环境:IAR EWARM ...
- 单节点k8s的一个小例子 webapp+mysql
安装kubernetes 准备一台centos7 1) 关闭firewalld 和 selinux systemctl stop firewalld systemctl disable firewal ...