博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(NO.00002)iOS游戏精灵战争雏形(五)
阅读量:7175 次
发布时间:2019-06-29

本文共 1070 字,大约阅读时间需要 3 分钟。

完成了精灵自己移动之后,我们开始着手实现按住精灵拖动的功能.

要想处理触摸事件,我们需要做2件事:

1.在类的初始化中打开触摸接收属性

2.实现触摸处理回调方法

我们依次来做这2件事.

首先要搞清楚在哪里打开触摸接收.是在MainScene场景中吗?也不是不可以,但是那样你必须要判断触摸位置是否在精灵节点上,然后再调整精灵的位置.

我们这里直接在精灵的Player类中开启触摸.首先在Player的初始化方法中开启触摸:

-(void)didLoadFromCCB{    self.userInteractionEnabled = YES;}

接着我们添加3个触摸回调方法:

-(void)touchEnded:(CCTouch )touch withEvent:(CCTouchEvent )event{

self.color = _orgColor;
}

-(void)touchMoved:(CCTouch )touch withEvent:(CCTouchEvent )event{

CGPoint location = [[CCDirector sharedDirector] convertTouchToGL:touch];
location = [self positionToPercentage:location];
[self stopAllActions];
self.position = location;
}

-(void)touchBegan:(CCTouch )touch withEvent:(CCTouchEvent )event{

_orgColor = self.color;
self.color = [CCColor yellowColor];
}

_orgColor实例变量用来保存原来的颜色,其实原来的颜色就是白色.

下面大致说说上面3个方法做了哪些事.玩家首次触摸到精灵时,touchBegan被调用,它修改了精灵的颜色,表示精灵目前处在被按下的状态.

当玩家按住精灵不放并且同时移动手指时,touchMoved方法被调用,我们首先将精灵的位置转换为整个屏幕的坐标,然后计算其实际的百分比的位置.因为在SpriteBuilder中我们设置该精灵的位置为百分比类型,所以这里要做一下转换.然后停止精灵的一切动作,如果有的话.最后我们设置精灵位置为触摸点的位置,这样就完成了移动精灵.

最后当玩家抬起手指时,我们将精灵颜色还原到正常状.

编译运行App,可以发现精灵现在受我们的手指摆布了:

这里写图片描述

你可能感兴趣的文章
button按钮点击不刷新(前端交流学习:452892873)
查看>>
安卓 使用Gradle生成正式签名apk文件
查看>>
@Html.Raw()
查看>>
ES6 Proxy
查看>>
图的基本算法(BFS和DFS)
查看>>
Linux时区详解
查看>>
61.node.js开发错误——Error: Connection strategy not found
查看>>
算法逆向第一篇——简单算法逆向
查看>>
机房收费系统数据库概念结构设计
查看>>
NanoJIT
查看>>
一个最简单GAL游戏资源文件黑盒分析(二)
查看>>
SQL Server 2005允许远程连接的配置说明
查看>>
HQL 语句
查看>>
全神贯注!聚精会神!一心一意!
查看>>
IBATIS事务处理 - - 博客频道 - CSDN.NET
查看>>
编程算法基础-数字数码管-隐藏password
查看>>
C++ - new与malloc的差别
查看>>
使用Html和ashx文件实现其简单的注册页面
查看>>
ZeroMQ接口函数之 :zmq_inproc – ØMQ 本地进程内(线程间)传输方式
查看>>
C#语言基础原理及优缺点
查看>>