用SpriteBuilder简化"耕牛遍地走"的动画效果(四)
写到这突然有童鞋质疑,你这哪里是牛,分明是熊嘛!
仔细看了下,还真像牛.反正是这个意思.怪本猫猪牛熊不分,好在道理是一样的.
下面继续,言归正传.
添加一个空白的touchBegan方法,如果没有这个方法,其他触摸回调也不会被响应.
接着是重点部分来了:
-(void)touchEnded:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
CGPoint location = [[CCDirector sharedDirector] convertTouchToGL:touch];
location = [self convertToNodeSpace:location];
CGSize viewSize = [CCDirector sharedDirector].viewSize;
float bearVelocity = viewSize.width/3.0;
CGPoint diff = ccpSub(location, _bear.position);
float distance = ccpLength(diff);
float moveDuration = distance/bearVelocity;
//根据玩家点击的位置设置熊头的方向
if (diff.x < 0) {
_bear.flipX = NO;
}else{
_bear.flipX = YES;
}
[_bear stopAction:_moveAction];
if (!_bearMoving) {
[_bear runAction:_walkAction];
}
CCActionMoveTo *move = [CCActionMoveTo actionWithDuration:moveDuration position:location];
CCActionCallBlock *block = [CCActionCallBlock actionWithBlock:^{
[_bear stopAction:_walkAction];
_bearMoving = NO;
}];
CCActionSequence *seq = [CCActionSequence actions:move,block,nil];
_moveAction = seq;
[_bear runAction:_moveAction];
_bearMoving = YES;
}
原文中seq行为最后用来回调方法,这里直接用回调block即可,不用再另外写一个方法了.
代码没啥好说的,主要是计算实际移动时间,是否翻转熊头,然后根据熊的状态确定是否播放动画等行为.
在编译执行之前,现将didLoadFromCCB方法中的:
[_bear runAction:_walkAction];
一行注释掉,否则会发生重复播放动画的错误.
现在编译运行app,效果如下:
用SpriteBuilder简化"耕牛遍地走"的动画效果(四)的更多相关文章
- 用SpriteBuilder简化"耕牛遍地走"的动画效果(三)
接下来的代码和原文差不多,建立一个数组用来存放动画帧,然后用数组来初始化一个CCAnimation动画对象.接着将牛放在屏幕中心,然后运行动画: NSMutableArray *walkAnimFra ...
- 用SpriteBuilder简化"耕牛遍地走"的动画效果(一)
这又是一个使用SpriteBuilder带来便捷的例子 原文地址在: http://www.raywenderlich.com/32045/how-to-use-animations-and-spri ...
- 用SpriteBuilder简化"耕牛遍地走"的动画效果(二)
首先使用SpriteBuilder新建一个项目,将之前下载的资源文件夹拖入SpriteBuilder的文件视图. 这里我们只需要一步操作就可以完成原文中在Texture Packer中的那么多操作:即 ...
- 使用 CSS3 实现超炫的 Loading(加载)动画效果
SpinKit 是一套网页动画效果,包含8种基于 CSS3 实现的很炫的加载动画.借助 CSS3 Animation 的强大功能来创建平滑,易于定制的动画.SpinKit 的目标不是提供一个每个浏览器 ...
- 使用CSS3实现超炫的Loading(加载)动画效果
SpinKit 是一套网页动画效果,包含8种基于 CSS3 实现的很炫的加载动画.借助 CSS3 Animation 的强大功能来创建平滑,易于定制的动画.SpinKit 的目标不是提供一个每个浏览器 ...
- loading 动画效果(收藏起来以后留着慢慢用)
动画效果一: html代码: <div class="spinner"> <div class="rect1"></div&g ...
- css3 加载动画效果
Loading 动画效果一 HTML 代码: <div class="spinner"> <div class="rect1&quo ...
- 最简化模型——css3分阶段动画效果(经过实测)
body { background: #dcdcdc; -webkit-animation: colorin 5s; /* chrome调用属性 */ animation: colo ...
- python 全栈开发,Day53(jQuery的介绍,jQuery的选择器,jQuery动画效果)
js总结 js: 1.ECMAScript5 ES5语法 2.DOM CRUD 获取 3种方式 id tag className //面向对象 对象 : 属性和方法 某个对象中 function $( ...
随机推荐
- ubuntu + 不识别无线网卡简易处理方式 + 需有线联网
进入ubuntu, 连接有线网; 系统设置 -> 软件和更新 -> 附加驱动 -> 找到无线网卡驱动并更新 若无候选的无线网卡驱动,我就没招了.
- nodeppt的使用教程
为什么选择nodeppt 这可能是迄今为止最好的网页版演示库 基于GFM的markdown语法编写 支持html混排,再复杂的demo也可以做! 支持多个皮肤:colors-moon-blue-dar ...
- vue+node.js+webpack开发微信公众号功能填坑——组件按需引入
初次开发微信公众号,整体框架是经理搭建,小喽喽只是实现部分功能,整体页面效果 整个页面使用两个组件:布局 FlexBox,搜索框 Search,demo文档 http://vue.ydui.org/d ...
- 04_Struts2标签
1.通用标签: property标签: 用来输出值栈属性的值 如果value属性没有给出,ValueStack值栈栈顶对象的值被输出 许多情况下,EL表达式可以提供更简洁的语法 url标签: url方 ...
- Python3 OS 文件/目录方法
os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...
- springMVC源码分析--RequestParamMethodArgumentResolver参数解析器(三)
之前两篇博客springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)和springMVC源码解析--HandlerMethodArgumentResol ...
- RX系列三 | RxJava | create | from | interval | just | range | filter
RX系列三 | RxJava | create | from | interval | just | range | filter 我们在第一篇里有说过一些基本的关系,现在我们需要用到一些依赖,这里记 ...
- Java集合框架总结
java集合框架主要分为实现了Collection接口的List和Set.映射接口Map. |-- List 有序,元素都有索引,可重复. |-- Set 无序,不可以存储重复的元素. |-- Map ...
- Android基础知识点-Manifest清单文件
每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误). 清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码. ...
- Novate 网络库:Retrofit2.0和RxJava的又一次完美改进加强(Tamic博客 -CSDN)
作者/Tamic http://blog.csdn.net/sk719887916/article/details/52195428 前言 用过RxJava和Retrofit的朋友,用久了就会发现Re ...