[ios]当经过一个指定的 Y 值,下降的所有其他按钮的按钮也随之消失

发布时间: 2017/3/21 22:44:54
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图使多个按钮掉下来屏幕一下子,以不同的速度。但当我有我 if 语句检查如果它通过的值,所有其他按钮也就消失了。我也递增分数去每次按钮通过 Y 值为-1。任何帮助被感激,谢谢。

- (void)b1Fall
{
b1.center = CGPointMake(b1.center.x, b1.center.y+6);

if (b1.center.y >= 506) {
    [self updateScore];
    b1.center = CGPointMake(44, 11);
  }
}

- (void)b2Fall
{
b2.center = CGPointMake(b2.center.x, b2.center.y+7);

if (b2.center.y >= 506) {
    [self updateScore];
    b2.center = CGPointMake(160, 11);
}
}

- (void)b3Fall
{
b3.center = CGPointMake(b3.center.x, b3.center.y+8);

if (b3.center.y >= 506) {
    [self updateScore];
    b3.center = CGPointMake(276, 11);
  }
}

- (void)updateScore
{
healthLabel.text = [NSString stringWithFormat:@"%d", [healthLabel.text intValue]-1];
}

- (void)viewDidLoad
{
[super viewDidLoad];

// REMOVE AFTER TESTING    
b1Timer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(b1Fall) userInfo:nil repeats:true];
b2Timer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(b2Fall) userInfo:nil repeats:true];
b2Timer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(b3Fall) userInfo:nil repeats:true];
}

解决方法 1:

几件事︰

1) 将这些动画而不是 viewDidLoad-viewDidAppear 要在动画开始时用户实际上看按钮,不认为加载到内存中,用户可能不能看到它 (viewDidLoad)。

2) 不使用 NSTimer 的动画,使用这︰。

 [UIView animateWithDuration:0.5
                          delay:1.0
                        options: UIViewAnimationCurveEaseOut
                     animations:^{


                     } 
                     completion:^(BOOL finished){
                        // loop your animation here.

                     }];

3.) 如果你想要做一个游戏,我不推荐使用这种方法。所有动画使用 UIKit 都将要在主线程上执行,并阻止用户流量。你想要什么是像 cocos2d 分类目录在哪里在 GPU 上做动画和随时支持异步游戏逻辑框架。UIKit 一般不是游戏开发的良好选择。

官方微信
官方QQ群
31647020