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

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

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



  1. //  
  2. //  UiNumRoll.m  
  3. //  WheelScore  
  4. //  
  5. //  Created by 周海锋 on 12-4-8.  
  6. //  Copyright 2012年 CJLU. All rights reserved.  
  7. //  
  8.   
  9. #import "UINumber.h"  
  10. @implementation UINumber  
  11. @synthesize m_texture;  
  12.   
  13. /* 
  14.  * init 初始化 
  15.  */  
  16. -(id) init  
  17. {  
  18.     if( (self=[super init])) {  
  19.         m_texture = NULL;  
  20.         m_style = NumStyleNormal;  
  21.         m_num = 0;  
  22.         m_nPosCur = 0;  
  23.         m_nPosEnd = 0;     
  24.         [self setup];  
  25.     }  
  26.     return self;  
  27. }  
  28.   
  29. /* 
  30.  * initWithStyle 初始化 
  31.  */  
  32. -(id) initWithStyle:(NumStyle) style  
  33. {  
  34.     if( (self=[super init]))   
  35.     {  
  36.         m_texture = NULL;  
  37.         m_style = style;  
  38.         m_num = 0;  
  39.         m_nPosCur = 0;  
  40.         m_nPosEnd = 0;  
  41.         [self setup];  
  42.     }  
  43.     return self;  
  44. }  
  45.   
  46. /* 
  47.  * setup 设置texture 
  48.  */  
  49. -(void)setup  
  50. {  
  51.     UIImage *image = [UIImage imageNamed:@"number.png"];  
  52.     m_texture = [[CCTexture2D alloc]initWithImage:image];  
  53.     CCSpriteFrame *frame = [CCSpriteFrame frameWithTexture:m_texture rect:CGRectMake(0, 0, NUM_WIDTH, NUM_HEIGHT)];  
  54.     [self setDisplayFrame:frame];  
  55. }  
  56.   
  57. /* 
  58.  * setNumber 设置显示的数字 
  59.  */  
  60. -(void) setNumber:(int) num  
  61. {  
  62.     m_nPosCur = NUM_HEIGHT * m_num;  
  63.     m_nPosEnd = NUM_HEIGHT * num;  
  64.     if (NumStyleNormal == m_style) {  
  65.         m_nMoveLen = 4;  
  66.     }  
  67.     else if (NumStyleSameTime == m_style) {  
  68.         m_nMoveLen = (m_nPosEnd-m_nPosCur)/20;  
  69.     }  
  70.       
  71.     if (m_num > num) {  
  72.         [self schedule:@selector(onRollUP:) interval:0.03];  
  73.     }  
  74.     else {  
  75.         [self schedule:@selector(onRollDown:) interval:0.03];  
  76.     }  
  77.     m_num = num;  
  78. }  
  79.   
  80. /* 
  81.  * onRollDown 向下滚动 
  82.  */  
  83. -(void) onRollDown:(ccTime) dt  
  84. {  
  85.     m_nPosCur += m_nMoveLen;  
  86.     if (m_nPosCur >= m_nPosEnd) {  
  87.         m_nPosCur = m_nPosEnd;  
  88.         [self unschedule:@selector(onRollDown:)];  
  89.     }  
  90.       
  91.     CCSpriteFrame *frame = [CCSpriteFrame frameWithTexture:m_texture rect:CGRectMake(0, m_nPosCur, NUM_WIDTH, NUM_HEIGHT)];  
  92.     [self setDisplayFrame:frame];  
  93. }  
  94.   
  95.   
  96. /* 
  97.  * onRollUP 向上滚动 
  98.  */  
  99. -(void) onRollUP:(ccTime) dt  
  100. {  
  101.     m_nPosCur -= 4;  
  102.     if (m_nPosCur <= m_nPosEnd) {  
  103.         m_nPosCur = m_nPosEnd;  
  104.         [self unschedule:@selector(onRollUP:)];  
  105.     }  
  106.       
  107.     CCSpriteFrame *frame = [CCSpriteFrame frameWithTexture:m_texture rect:CGRectMake(0, m_nPosCur, NUM_WIDTH, NUM_HEIGHT)];  
  108.     [self setDisplayFrame:frame];  
  109. }  
  110.   
  111. -(void)dealloc  
  112. {  
  113.     [self unscheduleAllSelectors];  
  114.     [m_texture release];  
  115.     [super dealloc];  
  116. }  
  117. @end  


  1. //  
  2. //  UIRollNum.m  
  3. //  WheelScore  
  4. //  
  5. //  Created by 周海锋 on 12-4-8.  
  6. //  Copyright 2012年 CJLU. All rights reserved.  
  7. //  
  8.   
  9. #import "UIRollNum.h"  
  10. @implementation UIRollNum  
  11. @synthesize numArray,m_point,style;  
  12.   
  13. /* 
  14.  * init 初始化 
  15.  */  
  16. -(id) init  
  17. {  
  18.     if (self = [super init]) {  
  19.         m_nNumber = 0;  
  20.         m_maxCol = 6;  
  21.         numArray =[[NSMutableArray alloc] init];  
  22.         zeroFill = YES;  
  23.         style = NumStyleNormal;  
  24.     }     
  25.     return self;  
  26. }  
  27.   
  28. /* 
  29.  * getNumber 获取显示的数字 
  30.  */  
  31. -(int) getNumber  
  32. {  
  33.     return m_nNumber;  
  34. }  
  35.   
  36. /* 
  37.  * setNumber 设置显示的数字 
  38.  * num int 设置的数字 
  39.  */  
  40. -(void) setNumber:(int)num  
  41. {  
  42.     if (m_nNumber != num) {  
  43.         m_nNumber = num;  
  44.        [self rebuildEffect];  
  45.     }  
  46. }  
  47.   
  48. /* 
  49.  * rebuildEffect 重新设置每位数字 
  50.  */  
  51. -(void) rebuildEffect  
  52. {  
  53.     [self clearEffect];  
  54.       
  55.     int i=0;  
  56.     int num = m_nNumber;  
  57.     while (1) {  
  58.         if (num<=0) {  
  59.             if(m_maxCol<=i && zeroFill)  
  60.             break;  
  61.         }  
  62.         int showNum = num%10;  
  63.           
  64.         UINumber* pNumber = [[UINumber alloc]initWithStyle:style];  
  65.         [numArray addObject:pNumber];  
  66.         [pNumber setNumber:showNum];  
  67.         [pNumber setPosition:CGPointMake(m_point.x - i*NUM_WIDTH, m_point.y)];  
  68.         [pNumber setAnchorPoint:CGPointMake(1, 0.5)];  
  69.         [self addChild:pNumber z:100];  
  70.           
  71.         i++;  
  72.         num = num/10;  
  73.     }  
  74. }  
  75.   
  76. /* 
  77.  * rebuildEffect 清楚每位数字 
  78.  */  
  79. -(void) clearEffect  
  80. {  
  81.     for(int i=0;i<[numArray count];i++) {  
  82.           
  83.         UINumber* pNumber = (UINumber *)[numArray objectAtIndex:i];  
  84.         [self removeChild:pNumber cleanup:YES];  
  85.     }  
  86.     [numArray removeAllObjects];  
  87. }  
  88.   
  89. -(void)dealloc  
  90. {  
  91.     [numArray release];  
  92.      [super dealloc];  
  93. }  
  94.   
  95. @end  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值