上篇最后遇到是神马问题呢?

原来由于现在seq动作的时间变得不确定了,jump的持续时间不能对应发生变化,导致可能选手在比赛后边就没有跳跃动作了!这虽不影响整个代码逻辑,却多少有些让玩家不爽.

一种解决办法就是,将jump动作设置为永久重复动作,然后在回调block中将其关闭即可.因为Obj-C中的block是闭包(不太清楚闭包的童鞋请自行度娘),所以在block中引用外面的jump都不是个事儿.

下面是完整的matchRun方法的实现:

-(void)matchRun{CCLOG(@"%@ invoke!",NSStringFromSelector(_cmd));if (_matching) {return;}[self matchReset];_matching = YES;for (Player *player in _players) {CCTime duration = (CCRANDOM_0_1() * 500.0/100) + 5.0;CCActionMoveBy *moveBy = [CCActionMoveBy actionWithDuration:duration position:ccp(0.9f, 0)];CCActionJumpBy *jump = [CCActionJumpBy actionWithDuration:duration position:ccp(0, 0) height:0.05 jumps:20];CCActionRepeatForever *repeat = [CCActionRepeatForever actionWithAction:jump];CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{_finishedCount++;[player endMatch];[player stopAction:repeat];if (_finishedCount == 1) {_bestElapsedTime = player.elapsedTime;}CCLabelTTF* label = (CCLabelTTF*)_labelArray[player.playerNumber-1];NSTimeInterval intervalOffset = player.elapsedTime - _bestElapsedTime;if (intervalOffset > 0) {label.string = [NSString stringWithFormat:@"NO.%d +%.4f s",_finishedCount,intervalOffset];}else{label.string = [NSString stringWithFormat:@"NO.%d %.4f s",_finishedCount,player.elapsedTime];}label.visible = YES;if (_finishedCount == PlayerCount) {_finishedCount = 0;_matching = NO;}}];CCActionSequence *seq = [CCActionSequence actionWithArray:@[moveBy,blk]];player.speed = [CCActionSpeed actionWithAction:seq speed:1.0];[player runAction:player.speed];[player runAction:repeat];[player startMatch];}
}

(NO.00001)iOS游戏SpeedBoy Lite成形记(十)相关推荐

  1. (NO.00001)iOS游戏SpeedBoy Lite成形记(十九)

    最后就是要完成前面设定的第3件事:如果玩家赌对了则赢钱,反之输钱. 前面的框架搭的差不多了,所以这里实现起来也就不难了 ;) 首先我们怎么知道用户输入完毕,然后关闭窗口了?只有在这个点上GameSce ...

  2. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)

    自己的游戏自己更需要多玩,这样才能首先发现不足的地方.所以本猫到现在已经忍一个地方很久了,就是弹出moneyLayer后每次都要输入数字才能关闭,这多少让人不爽.于是本篇我们就修正这个小小的不便. 首 ...

  3. (NO.00001)iOS游戏SpeedBoy Lite成形记(八)

    前一篇提到,如果要想动态修改选手的速度需要在update方法中添加代码. 因为update方法在游戏每一帧都会调用,所以我们不可能修改的太频繁.否则一来对性能有影响,而来玩家表现的极不自然,像抽风一样 ...

  4. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)

    下面修改最为关键的matchRun方法里的代码: CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{_finishedCoun ...

  5. (NO.00001)iOS游戏SpeedBoy Lite成形记(九)

    我们回到matchRun方法中去尝试第一次修改,部分代码如下: CCActionMoveBy *moveBy = [CCActionMoveBy actionWithDuration:duration ...

  6. (NO.00003)iOS游戏简单的机器人投射游戏成形记(十二)

    回到Xcode,新建Level1类,继承于CCNode. 打开Level1.m在初始化方法中添加如下方法: -(void)didLoadFromCCB{[self initBasket];[self ...

  7. 【原创】IOS游戏辅助--天天酷跑助手的实现

    标 题: [原创]IOS游戏辅助--天天酷跑助手的实现 作 者: coltor 时 间: 2014-04-16,20:20:44 链 接: http://bbs.pediy.com/showthrea ...

  8. (NO.00002)iOS游戏精灵战争雏形(一)

    原本想做一个复杂点的平面动作游戏,可以觉得还是有点把握不了.还是先从简单的原型开始吧. 构思中的精灵战争(SpriteWar)是一个类似FC时代的小游戏,可以造兵,可以捕获敌兵.原本还想加上保卫老巢的 ...

  9. AppStore编年史 iOS游戏开发者的变迁路

    http://ipad.66u.com/yxzb/20140627_29184.html 智能机游戏市场发展不过三四年,其间的形态与格局变化,却已沧海桑田.AppStore编年史带大家走进iOS游戏开 ...

最新文章

  1. 时间,数字 ,字符串之间的转换
  2. python如何导入类里_Python中如何导入类示例详解
  3. F1-Score相关概念
  4. 【转载】google搜索从入门到精通
  5. 破解版 中易广告联盟程序 v6.0
  6. 1.什么是计算机图形学?
  7. RS232 与 RS485的区别总结
  8. IllegalArgumentException,Mapped Statements collection does not contain value for xxxxx
  9. Spring Boot项目引入日志LogBack(Sif4j),将项目日志输出到文件中。
  10. 国务院办公厅关于2017年 部分节假日安排的通知 (zz)
  11. Run-down Protection
  12. Y z推荐菜东家 易订货生鲜系统_易订货推出生鲜专版,为生鲜农贸客户提供解决方案...
  13. VAR-MVGARCH-BEKK模型的winrats实现
  14. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A
  15. NC6自助开发文件存放路径及一些总结以及修改自助登录界面的样式、图片、添加文字提示等文件
  16. RapidScada免费开源Scada组态软件系列教程7-Linux下系统的运行
  17. 服务器c盘哪些文件可以删,教你c盘哪些文件可以删除
  18. DeleteFile()函数的正确使用(呼,解决了个小麻烦)
  19. 前端支付对接,支付宝支付、微信支付
  20. 塔里木大学有没有计算机专业,塔里木大学最好的专业(什么专业最好)

热门文章

  1. Qt Creator使用自定义着色器
  2. C++确定字符串是否具有唯一字符的算法(附完整源码)
  3. OpenGL instancing实例化的实例
  4. C++Bubble sort冒泡排序的实现算法(附完整源码)
  5. c++Cocktail Selection Sort鸡尾酒选择排序的实现算法(附完整源码)
  6. C++Pascal‘s Triangle杨辉三角的实现算法
  7. C++在哪几种情况只能用intialization list 而不能用assignment?
  8. QT实现SameGame
  9. C++构造函数的分类及调用
  10. 二叉树层序遍历递归与非递归_二叉树基础(1)-构建和遍历(递归和非递归)...