gpt4 book ai didi

ios - 为什么这个图像不断出现? objective-C

转载 作者:行者123 更新时间:2023-11-29 10:44:40 24 4
gpt4 key购买 nike

我已经设置了一个纹理,使其在场景上方生成,并慢慢向下滚动屏幕以查看风景。纹理的滚动和出现都很好。他们按我想要的方式工作。问题是它在离开场景后重新出现,即使我已经将它设置为从父对象中删除。这是代码:

元素的生成:

-(void)initalizingScrollingBackground
{
for (int i = 0; i < 2; i++) {

SKSpriteNode *tumbleWeed = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"tumbleWeed.png"] size:CGSizeMake(40, 40)];
tumbleWeed.position = CGPointMake(160, -10);
tumbleWeed.zPosition = 1.0;
tumbleWeed.name = @"tumbleWeed";
[bg addChild:tumbleWeed];

}

}

移动项目,并在它离开屏幕时将其删除:

    -(void)moveItems {

[self enumerateChildNodesWithName:@"tumbleWeed" usingBlock:^(SKNode *node, BOOL *stop) {
SKSpriteNode * tumbleWeed = (SKSpriteNode *)node;
CGPoint bgVelocity = CGPointMake(0, -BG_VELOCITY);
CGPoint amtToMove = CGPointMultiplyScalar(bgVelocity,_dt);
tumbleWeed = CGPointAdd(amtToMove, tumbleWeed.position);

if (tumbleWeed.position.y > self.size.height + 10) {
[tumbleWeed removeFromParent];
}

}];

}

我不明白为什么项目会重新出现在场景顶部并重新开始滚动?有什么理由吗?我该如何解决?

谢谢。

最佳答案

给你的两个想法:

1) 在 -(void)initalizingScrollingBackground 中放置一个断点,以便应用程序将在那里暂停。然后查看调用堆栈,了解如何触发对此方法的调用。

2) 不要在子对象上调用 removeFromParent,而是尝试从父对象开始该操作。例如:[bg removeChild: tumbleWeed]; 我曾在其他项目中看到从 child 发出此调用可能会出现问题的情况,因此我采用了始终添加/删除的做法行动从 parent 开始。

祝你好运!希望这会有所帮助....

关于ios - 为什么这个图像不断出现? objective-C ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22794464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com