ios - 为什么这些 UIImages 在屏幕上重新加载时会出现故障? :

标签 ios objective-c

在我的代码中,在 Frog 跳到睡莲叶上之后,睡莲叶会慢慢淡出,(让它看起来像是被淹没了)然后在它们通过屏幕底部后,它们会重新加载到屏幕顶部.代码如下:

if (CGRectIntersectsRect(FrogSquare.frame, lilypadTS.frame) && (upMovement <= -1) && (swim == YES) && (startingice.hidden == NO)){
    [self bounce];
    [self iceblockfall];
    if (lilypadused == NO) {
        addedScore = 1;
        lilypadused = YES;
    }

    //hide pad
     [UIView beginAnimations:nil context:nil];
     [UIView setAnimationDuration:4];
     [startingice setAlpha:0];
     [UIView commitAnimations];

     [self performSelector:@selector(hidePad) withObject:self afterDelay:4.0];
}

那部分工作正常,睡莲叶做了它应该做的。以下是我遇到这个奇怪故障的地方:

if (lilypad.center.y > 610) {
    RandomPosition = arc4random() %248;
    RandomPosition = RandomPosition + 36;
    lilypad.center = CGPointMake(RandomPosition, -22);
    lilypadused = NO;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0];
    [lilypad setAlpha:1];
    [UIView commitAnimations];
    [self performSelector:@selector(showlilypad) withObject:self afterDelay:0];

} else if ((lilypad.center.y > 610) && (lilypad.hidden == YES)) {
    RandomPosition = arc4random() %248;
    RandomPosition = RandomPosition + 36;
    lilypad.center = CGPointMake(RandomPosition, -22);
    lilypadused = NO;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0];
    [lilypad setAlpha:1];
    [UIView commitAnimations];
    [self performSelector:@selector(showlilypad) withObject:self afterDelay:0];
}

发生的事情是出于某种原因,睡莲会像预期的那样重新加载到屏幕顶部,但随后当用户跳到顶部睡莲下方的睡莲上时。如果那令人困惑——屏幕尺寸 320 x 568,lilypad1 在屏幕顶部重新加载点 = -22,然后慢慢下降,所以说下降一点后点是 10,假设玩家跳到 HAS NOT been 的 lilypad2隐藏并超过610(在顶部重新加载),它使lilypad1立即隐藏,这是为什么??

最佳答案

您提供的代码量确实不足以诊断您的问题。您很可能(肯定)引用了导致错误行为的不正确的 lilypad。您可能应该仔细查看您的应用程序的架构,以确保您以最佳方式正确管理 lilypads 列表。

此外,无论何时使用延迟 - 请注意,这些延迟是近似值,而不是精确值。您可能处于竞争状态,隐藏尚未发生但您已经在顶部再次显示它,然后隐藏稍后触发。

最后,如果 afterDelay 为 0,您不妨直接调用 showlilypad 方法 - 无需真正延迟 0 秒。

祝你好运!

关于ios - 为什么这些 UIImages 在屏幕上重新加载时会出现故障? :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22428227/

相关文章:

ios - 保留段落标签的iOS NSString Flatten Html

ios - Swift——在 App Delegate 中实例化一个没有 Storyboard的导航 Controller

ios - 我可以直接从具有特定大小类或特征集合的 xib 加载 UITableViewCell 吗?

iOS - UIView 容器隐藏在键盘后面

iphone - 如何 NSLog ASCII 无限符号?

objective-c - UIViewController 和 UITableViewCell 上的逻辑相同,如何维护一份源代码?

ios - Facebook iOS SDK 版本 4.0.1 中的 FBSDKAppInviteDialog 邀请成功发送,但没有收到通知

ios - Xcode BoringSSL peer disconnect 导致应用程序在启动时挂起

ios - CloudKit复合查询(OR查询)

ios - Storyboard和子类