当前位置: 首页 > news >正文

【IOS】仿捕鱼达人的金币滚动显示

【原创作品, 欢迎转载,转载请在明显处注明! 谢谢。

原文地址:http://blog.csdn.net/toss156/article/details/7439769

今天给大家带来一个模仿捕鱼达人中,金币的滚动显示。(部分代码参考了cocoachina上一个C++版的)


// // UiNumRoll.h // WheelScore // // Created by 周海锋 on 12-4-8. // Copyright 2012年 CJLU. All rights reserved. // #import <Foundation/Foundation.h> #import "cocos2d.h" #define NUM_HEIGHT 20 #define NUM_WIDTH 20 typedef enum{ NumStyleNormal, NumStyleSameTime, }NumStyle; @interface UINumber : CCSprite { NumStyle m_style; //滚动样式 int m_num; //显示的数字 int m_nPosCur; //当前的位置 int m_nPosEnd; //结束的位置 int m_nMoveLen; //每次移动的位置 CCTexture2D *m_texture; //数字的texture } @property(nonatomic,retain) CCTexture2D *m_texture; -(id) initWithStyle:(NumStyle) style; -(void) setNumber:(int) num; -(void) onRollDown:(ccTime) dt; -(void) onRollUP:(ccTime) dt; -(void) setup; @end
// // UiNumRoll.m // WheelScore // // Created by 周海锋 on 12-4-8. // Copyright 2012年 CJLU. All rights reserved. // #import "UINumber.h" @implementation UINumber @synthesize m_texture; /* * init 初始化 */ -(id) init { if( (self=[super init])) { m_texture = NULL; m_style = NumStyleNormal; m_num = 0; m_nPosCur = 0; m_nPosEnd = 0; [self setup]; } return self; } /* * initWithStyle 初始化 */ -(id) initWithStyle:(NumStyle) style { if( (self=[super init])) { m_texture = NULL; m_style = style; m_num = 0; m_nPosCur = 0; m_nPosEnd = 0; [self setup]; } return self; } /* * setup 设置texture */ -(void)setup { UIImage *image = [UIImage imageNamed:@"number.png"]; m_texture = [[CCTexture2D alloc]initWithImage:image]; CCSpriteFrame *frame = [CCSpriteFrame frameWithTexture:m_texture rect:CGRectMake(0, 0, NUM_WIDTH, NUM_HEIGHT)]; [self setDisplayFrame:frame]; } /* * setNumber 设置显示的数字 */ -(void) setNumber:(int) num { m_nPosCur = NUM_HEIGHT * m_num; m_nPosEnd = NUM_HEIGHT * num; if (NumStyleNormal == m_style) { m_nMoveLen = 4; } else if (NumStyleSameTime == m_style) { m_nMoveLen = (m_nPosEnd-m_nPosCur)/20; } if (m_num > num) { [self schedule:@selector(onRollUP:) interval:0.03]; } else { [self schedule:@selector(onRollDown:) interval:0.03]; } m_num = num; } /* * onRollDown 向下滚动 */ -(void) onRollDown:(ccTime) dt { m_nPosCur += m_nMoveLen; if (m_nPosCur >= m_nPosEnd) { m_nPosCur = m_nPosEnd; [self unschedule:@selector(onRollDown:)]; } CCSpriteFrame *frame = [CCSpriteFrame frameWithTexture:m_texture rect:CGRectMake(0, m_nPosCur, NUM_WIDTH, NUM_HEIGHT)]; [self setDisplayFrame:frame]; } /* * onRollUP 向上滚动 */ -(void) onRollUP:(ccTime) dt { m_nPosCur -= 4; if (m_nPosCur <= m_nPosEnd) { m_nPosCur = m_nPosEnd; [self unschedule:@selector(onRollUP:)]; } CCSpriteFrame *frame = [CCSpriteFrame frameWithTexture:m_texture rect:CGRectMake(0, m_nPosCur, NUM_WIDTH, NUM_HEIGHT)]; [self setDisplayFrame:frame]; } -(void)dealloc { [self unscheduleAllSelectors]; [m_texture release]; [super dealloc]; } @end
// // UIRollNum.h // WheelScore // // Created by 周海锋 on 12-4-8. // Copyright 2012年 CJLU. All rights reserved. // #import <Foundation/Foundation.h> #import "cocos2d.h" #import "UINumber.h" @interface UIRollNum : CCSprite { int m_nNumber; //显示的数字 int m_maxCol; //最大显示位数 NSMutableArray *numArray; //存放每个数字的数组 CGPoint m_point; //坐标 bool zeroFill; //是否开启0填充 NumStyle style; //滚动样式 } @property (nonatomic,retain) NSMutableArray *numArray; @property (nonatomic) CGPoint m_point; @property (nonatomic) NumStyle style; -(void) rebuildEffect; -(void) clearEffect; -(int) getNumber; -(void) setNumber:(int)num; @end
// // UIRollNum.m // WheelScore // // Created by 周海锋 on 12-4-8. // Copyright 2012年 CJLU. All rights reserved. // #import "UIRollNum.h" @implementation UIRollNum @synthesize numArray,m_point,style; /* * init 初始化 */ -(id) init { if (self = [super init]) { m_nNumber = 0; m_maxCol = 6; numArray =[[NSMutableArray alloc] init]; zeroFill = YES; style = NumStyleNormal; } return self; } /* * getNumber 获取显示的数字 */ -(int) getNumber { return m_nNumber; } /* * setNumber 设置显示的数字 * num int 设置的数字 */ -(void) setNumber:(int)num { if (m_nNumber != num) { m_nNumber = num; [self rebuildEffect]; } } /* * rebuildEffect 重新设置每位数字 */ -(void) rebuildEffect { [self clearEffect]; int i=0; int num = m_nNumber; while (1) { if (num<=0) { if(m_maxCol<=i && zeroFill) break; } int showNum = num%10; UINumber* pNumber = [[UINumber alloc]initWithStyle:style]; [numArray addObject:pNumber]; [pNumber setNumber:showNum]; [pNumber setPosition:CGPointMake(m_point.x - i*NUM_WIDTH, m_point.y)]; [pNumber setAnchorPoint:CGPointMake(1, 0.5)]; [self addChild:pNumber z:100]; i++; num = num/10; } } /* * rebuildEffect 清楚每位数字 */ -(void) clearEffect { for(int i=0;i<[numArray count];i++) { UINumber* pNumber = (UINumber *)[numArray objectAtIndex:i]; [self removeChild:pNumber cleanup:YES]; } [numArray removeAllObjects]; } -(void)dealloc { [numArray release]; [super dealloc]; } @end
demo的下载地址:http://download.csdn.net/detail/toss156/4209940

相关文章:

  • 谷歌 AXURE RP EXTENSION拓展问题
  • Android 滑动效果入门篇(二)—— Gallery
  • 大型网站典型故障案例分析
  • 在C#中派生C++的抽象类
  • Eureka-服务注册与发现组件
  • GameEntityComponent
  • mysql5.7.22安装步骤
  • Android 滑动效果基础篇(三)—— Gallery仿图像集浏览
  • 笔试之const问题
  • 【IOS】《捕鱼达人》的简单实现(一)
  • 2018.5.23 创建用户并授权序列
  • MFC双缓冲 防止闪屏
  • js数组操作
  • React-router
  • SourceEngine中的粒子系统
  • [NodeJS] 关于Buffer
  • 《深入 React 技术栈》
  • Cumulo 的 ClojureScript 模块已经成型
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java-详解HashMap
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • use Google search engine
  • webpack入门学习手记(二)
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 开源地图数据可视化库——mapnik
  • 排序(1):冒泡排序
  • 巧用 TypeScript (一)
  • 如何用vue打造一个移动端音乐播放器
  • 手写一个CommonJS打包工具(一)
  • 微服务入门【系列视频课程】
  • 一道闭包题引发的思考
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (2020)Java后端开发----(面试题和笔试题)
  • (39)STM32——FLASH闪存
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (九)信息融合方式简介
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (万字长文)Spring的核心知识尽揽其中
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)Windows2003安全设置/维护
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 表达式计算:Expression Evaluator
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET构架之我见
  • .NET连接数据库方式
  • @RunWith注解作用