关于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的更多相关文章

  1. Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)

    Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)  本篇博客介绍Cocos2d-x 3.2Lua演示样例中点击移动的样例,在这个样例你能够得到怎样创建单点触 ...

  2. quick-cocos2d-x之testlua之mainMenu.lua

    require "helper" require "testResource" require "ActionsTest.ActionsTest&qu ...

  3. 按 Eclipse 开发喜好重新布置 cocos2dx 目录层次

    [tonyfield 2013.08.29 ] 1.  Cocos2dx 库的改动 处于个人的固执,花一天时间重新布置了cocos2dx 2.1.4的目录层次,将android平台无关的代码全数裁剪, ...

  4. Cocos2d-x 3.1.1 lua-tests 开篇

    Cocos2d-x 3.1.1 lua-tests开篇   本篇博客打算从研究Cocos2d-x引擎提供的測试样例来写起,笔者针对Cocos2d-x 3.1.1这个版本号来介绍怎样来学习它给我们提供的 ...

  5. Cocos2d-x学习笔记(20)(TestCpp源代码分析-4)

    本章主要介绍testResource.h与tests.h,当中tests.h主要是存放全部用到的头文件.与菜单相相应的宏定义以及菜单数组,testResource.h主要用是资源文件定义. //tes ...

随机推荐

  1. UILabel字体间距调整

    思路: 写一个 UILbel的子类:在子类里面重新布置UILbel的字体间距: 如代码 .h #import <UIKit/UIKit.h> @interface AdjustableUI ...

  2. request.getSession().setAttribute(&quot;&quot;,..)和request.setAttribute(&quot;&quot;,...)的差别

    request.getSession.setAttribute()是获得当前会话的session,然后再setAttribute到session里面去,有效范围是session而不是request. ...

  3. 在VC中创建DLL文件的方法步骤

    一.Win32动态链接库 1.制作的步骤: (1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A simple DLL project类型. (2)MyDll ...

  4. 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 此步完 ...

  5. Redis学习(2)-redis安装

    安装redis需要先从官网下载的源码进行编译,编译依赖GCC环境,如果没有GCC环境,需要安装GCC. yum install gcc-c++ 步骤1:上传 将Windows下下载的压缩文件上传Lin ...

  6. 解决a标签IE下点击后出现轮廓框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. ribbon区域亲和配置一例

    只需在springboot的配置文件中添加以下内容即可: eureka.instance.metadata-map.zone=left 该配置是一个eureka客户端的配置,并且该客户端使用了ribb ...

  8. highstock K线图 深入研究

    K线图,相信每个股民都不陌生,如何用SVG画好一个K线图是一个难题. 我选择用highstock做为画图组件,适当的修改了一下源码,参考了数个财经网站的案例,完成了一个不太成熟的K线图,欢迎大家批评指 ...

  9. 关于 while(1)和for(;;)效率问题的一点想法

    这几天看到好友的文章关于while(1)和for(;;)效率的讨论,手痒说了两句.回头一寻思,自己也仅仅是判断.没有做不论什么实验,我们就看看这两种写法究竟有什么差别: 实验环境:IAR EWARM ...

  10. 单节点k8s的一个小例子 webapp+mysql

    安装kubernetes 准备一台centos7 1) 关闭firewalld 和 selinux systemctl stop firewalld systemctl disable firewal ...