cocos3.0通过精灵控制精灵的触摸事件的实现

auto listener = EventListenerTouchOneByOne::create();
	listener->setSwallowTouches(true);
	auto  sprite = this->getChildByTag(virTag)->getChildByTag(jumpTag);

	listener->onTouchBegan = CC_CALLBACK_2(MLayer::onTouchBegan, this);
	listener->onTouchMoved = CC_CALLBACK_2(MLayer::onTouchMoved, this);
	listener->onTouchEnded = CC_CALLBACK_2(MLayer::onTouchEnded, this);
	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, sprite);  //该精灵享有触摸

	return  true;

}

bool  MLayer::onTouchBegan(Touch* touch, Event*  event)
{
	auto target = static_cast<Sprite*>(event->getCurrentTarget());//获取当前的触摸目标(那个跳跃精灵)
	Point locationInNode = target->convertToNodeSpace(touch->getLocation());//将本地坐标系转化为精灵坐标系(以精灵的左下角作为坐标原点)
	Size s= target->getContentSize();//获取精灵的文本尺寸大小
	Rect rect = Rect(0, 0, s.width, s.height);//获取精灵的矩形框(起始点为精灵的左下角)
	if (rect.containsPoint(locationInNode))//判断触摸点是否在精灵的矩形框上
	{
		auto sprite2 =this->getChildByTag(cmsTag)->getChildByTag(catTag);
		sprite2->setScale(0.2f);
	}

	return true;
}
void MLayer::onTouchMoved(Touch* touch, Event* event)
{
	auto target = static_cast<Sprite*>(event->getCurrentTarget());//获取当前的触摸目标
	Point locationInNode = target->convertToNodeSpace(touch->getLocation());//将本地坐标系转化为精灵坐标系(以精灵的左下角作为坐标原点)
	Size s = target->getContentSize();//获取精灵的文本尺寸大小
	Rect rect = Rect(0, 0, s.width, s.height);//获取精灵的矩形框(起始点为精灵的左下角)
	if (rect.containsPoint(locationInNode))//判断触摸点是否在精灵的矩形框上
	{
		target->setPosition(target->getPosition() + touch->getDelta());//将捕获的精灵坐标设在移动结束的地方
	}
}
void MLayer::onTouchEnded(Touch* touch ,Event* event)
{
	auto sprite2 = this->getChildByTag(cmsTag)->getChildByTag(catTag);
	sprite2->setScale(0.6f);
}

cocos3.0通过精灵控制精灵的触摸事件的实现,布布扣,bubuko.com

时间: 2024-08-05 19:32:05

cocos3.0通过精灵控制精灵的触摸事件的实现的相关文章

cocos2dx 2.2 之触摸事件

cocos2dx  2.2  之触摸事件 要使精灵能够接收到触摸事件,无非要做三件事. 注册触摸事件; 接收触摸事件; 处理触摸事件. 下面就从这三点出发,来了解一下精灵如何响应触摸事件. 1.注册触摸事件 精灵类Poker继承Sprite和CCTargetedTouchDelegate,并重写CCTargetedTouchDelegate的三个函数ccTouchBegan,ccTouchMoved,ccTouchEnded 同时加入辅助函数rect()和containTouchPoint(CC

cocos3.0使用cocostudio动画帧结合地图对象键值创建精灵动画

内容如下: #include "cocos2d.h" #include "cocostudio/CocoStudio.h" //精灵猫和其他精灵的tag typedef enum{ catTag =1, }; //cocostudio 动画帧tag typedef enum{ catWalkTag = 1001, }; class Base :public cocos2d::Layer { public: Base(); ~Base(); //在地图中创建一个活多个

Cocos2d-x《赵云要格斗》--虚拟摇杆控制精灵上下左右运动

本文将要实现一个横版格斗类游戏,并实现摇杆控制英雄上下左右运动.这里实现了能通过虚拟摇杆控制精灵的运动,而且能够改变精灵运动时的脸部朝向.之前看了好多人写虚拟摇杆,但是就是没写控制精灵的运动和脸朝向的.所以自己就想要写个文章好好讲下它的实现思路.好了,下面我们开始吧. 最终效果: cocos2d-x版本:2.2.5 工程环境:windows7+VS2010 打开方式:将工程放在cocos2d-x安装目录下的project文件夹下用VS打开 目录: 一.修改背景图片和窗口大小 二.添加虚拟摇杆 三

Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发《赵云要格斗》

这是自己开发的第一次小游戏,有需要源代码和材料的邮箱留个,这里实现了能通过虚拟摇杆控制精灵的运动,而且能够改变精灵运动时的脸部朝向.之前看了好多人写虚拟摇杆,但是就是没写控制精灵的运动和脸朝向的.所以自己就想要写个文章好好讲下它的实现思路.好了,下面我们开始吧. 目录: 一.修改背景图片和窗口大小 二.添加虚拟摇杆 三.添加精灵并用摇杆控制精灵的运动 四.思路总结 一.修改背景图片和窗口大小 新建一个工程,工程名为HelloCpp.为了让效果更加好些,首先修改下窗口的大小,在main.cpp中改

Quick cocos2dx-Lua(V3.3R1)学习笔记(九) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧

本篇就开始讲单点触摸事件,我们在前面用UIPushButton做菜单那篇,就用了触摸事件,只不过我们感觉不出来,我们基本不需要分析触摸消息.这篇我们用一个精灵模仿出按钮效果,加强理解 至于原理,廖大在文档中讲的很清楚,就不赘叙了. Quick的触摸机制(点我点我(*^__^*)) 一般,我们按按钮的时候,总会发现,按钮按下去,按钮会缩小,松开,按钮会恢复原来的大小. function MyScene:ctor() local sprite = display.newSprite("Hello.p

Cocos2d-x 自定义按钮类控制精灵攻击----之游戏开发《赵云要格斗》

本篇要讲讲怎么自定义按钮类,并通过这个按钮类的对像来控制精灵的攻击.在看本篇之前最好先看看上一篇 Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发<赵云要格斗>,要素材和项目代码的把邮箱留下吧,因为这个项目还没弄完,我一直在改. 精灵的攻击也是一个动画,只不过,这个动画只播放一次,相当于在界面上加一个按钮,然后你点一次按钮,精灵就播放一次动画. 一.自定义按钮类 按钮可以用COCOS2D-X自带的,想着方便一点,我就自己封装了一个按钮类ControlButton,在里面添加一个

cocos2d-x项目101次相遇:使用触摸事件移动 精灵

cocos2d-x 101次相遇 / 文件夹 1   安装和环境搭建 -xcode 2   Scenes , Director, Layers, Sprites3   建立图片菜单 4   在HelloWorld上--建立新场景 5   添加一个精灵sprite 5.1   缩小sprite并使之完整显示6   action ,移动sprite 7   3.0 的点击事件,CCTouchDelegate已经停用了 8   使用触摸事件移动 精灵 void CMyFirstScene::onTou

如何在Cocos2D 1.0 中掩饰一个精灵(六)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 掩饰一个精灵:实现代码 打开HelloWorldLayer.m并且在init方法上方添加如下方法: - (CCSprite *)maskedSpriteWithSprite:(CCSprite *)textureSprite maskSprite:(CCSprite *)maskSprite { // 1 CCRenderTexture * rt = [CCRe

NGUI研究之Sprite精灵与精灵动画的使用

 学习了几天Unity3D强大的NGUI插件,觉得NGUI中最大的亮点之一就是Sprite精灵.我们先说说精灵是什么东西?它可以在一张大图中去截取一部分(大图就是整体图像集合,而截取的小图就是一个精灵),然后起一个精灵的名称,使用时通过精灵的名称就能直接绘制,并且精灵还可以播放动画.总之真的非常强大.本节我们学习如何创建自己的精灵文件.基本使用不了解的看NGUI研究之开始学习制作第一个例子 首先我们在Project中创建一个Prefab对象,默认给它Transform变换属性,暂时我们给Pr