用SpriteBuilder简化"耕牛遍地走"的动画效果(四)
2015-11-17 14:40
417 查看
写到这突然有童鞋质疑,你这哪里是牛,分明是熊嘛!
仔细看了下,还真像牛.反正是这个意思.怪本猫猪牛熊不分,好在道理是一样的.
下面继续,言归正传.
添加一个空白的touchBegan方法,如果没有这个方法,其他触摸回调也不会被响应.
接着是重点部分来了:
原文中seq行为最后用来回调方法,这里直接用回调block即可,不用再另外写一个方法了.
代码没啥好说的,主要是计算实际移动时间,是否翻转熊头,然后根据熊的状态确定是否播放动画等行为.
在编译执行之前,现将didLoadFromCCB方法中的:
一行注释掉,否则会发生重复播放动画的错误.
现在编译运行app,效果如下:
仔细看了下,还真像牛.反正是这个意思.怪本猫猪牛熊不分,好在道理是一样的.
下面继续,言归正传.
添加一个空白的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,效果如下:
相关文章推荐
- Gifski:一个跨平台的高质量 GIF 编码器
- 模仿动画的放大缩小容器
- Android中ViewFlipper的使用及设置动画效果实例详解
- jQuery实现美观的多级动画效果菜单代码
- php判断GIF图片是否为动画的方法
- jQuery实现动画效果circle实例
- 浅析JavaScript动画
- js排序动画模拟-插入排序
- javascript+HTML5的Canvas实现Lab单车动画效果
- 基于javascript实现漂亮的页面过渡动画效果附源码下载
- js实现按钮颜色渐变动画效果
- jQuery实现连续动画效果实例分析
- jQuery实现带有洗牌效果的动画分页实例
- jquery实现先淡出再折叠收起的动画效果
- jQuery实现有动画淡出效果的二级折叠菜单代码
- jQuery使用animate创建动画用法实例
- jquery带动画效果幻灯片特效代码
- jQuery实现带动画效果的多级下拉菜单代码
- jQuery动画特效实例教程
- JQuery动画和停止动画实例代码