- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将 iPad Air 更新到 7.1,将 Xcode 更新到 5.1。
Xcode 想将我的项目更新为推荐的设置,我同意了。
之后,当我从父节点中删除节点时,我的游戏开始在几个地方崩溃。
这对我来说是一个惊喜——在更新之前没有交叉。我恢复了我的项目并发现了 Xcode 对它做了什么——只改变了 Architectures 字符串:
前:
后:
在旧版本中没有崩溃。
如果我在新版本中删除 arm64 支持,则不会发生崩溃。
在模拟器中,新旧版本都没有崩溃。
我应该在我的代码中注意哪里?
代码栈:
SpriteKit`SKCSprite::removeSubsprite(SKCSprite*):
0x1859442cc: stp fp, lr, [sp, #-16]!
0x1859442d0: add fp, sp, 0
0x1859442d4: stp x20, x19, [sp, #-16]!
0x1859442d8: sub sp, sp, #16
0x1859442dc: mov x19, x0
0x1859442e0: str x1, [sp, #8]
0x1859442e4: add x20, sp, 8
0x1859442e8: add x0, x19, 544
0x1859442ec: mov x1, x20
0x1859442f0: bl 0x18594872c ; unsigned long std::__1::__tree<SKCSprite*, std::__1::less<SKCSprite*>, std::__1::allocator<SKCSprite*> >::__erase_unique<SKCSprite*>(SKCSprite* const&)
0x1859442f4: add x0, x19, 464
0x1859442f8: mov x1, x20
0x1859442fc: bl 0x185948218 ; std::__1::list<SKCSprite*, std::__1::allocator<SKCSprite*> >::remove(SKCSprite* const&)
0x185944300: ldr x20, [sp, 1]
0x185944304: ldrb w8, [x20, #18]
0x185944308: ldrh w9, [x20, #16]
0x18594430c: orr w8, w9, w8, lsl #16
0x185944310: tbnz w8, #1, 0x185944324 ; SKCSprite::removeSubsprite(SKCSprite*) + 88
0x185944314: ldr x9, [x20, 61]
0x185944318: ldr x9, [x9, 2]
0x18594431c: cbnz x9, 0x185944324 ; SKCSprite::removeSubsprite(SKCSprite*) + 88
0x185944320: tbz w8, #8, 0x185944330 ; SKCSprite::removeSubsprite(SKCSprite*) + 100
0x185944324: mov x0, x19
0x185944328: mov x1, x20
0x18594432c: bl 0x18594828c ; SKCSprite::removeFromOffscreenList(SKCSprite*)
0x185944330: str xzr, [x20, #392]
0x185944334: ldr x8, [x20, 0]
0x185944338: ldr x8, [x8, 10]
0x18594433c: mov x0, x20
0x185944340: blr x8
0x185944344: ldrh w8, [x19, #20]
0x185944348: orr w9, w8, #0x40
0x18594434c: strh w9, [x19, #20]
0x185944350: ldr x8, [x19, 49]
0x185944354: cbz x8, 0x185944388 ; SKCSprite::removeSubsprite(SKCSprite*) + 188
0x185944358: add x9, x19, 392
0x18594435c: ldrh w10, [x8, #20]
0x185944360: orr w10, w10, #0x40
0x185944364: strh w10, [x8, #20]
0x185944368: ldr x8, [x9, 0]
0x18594436c: add x9, x8, 392
0x185944370: ldrh w10, [x8, #20]
0x185944374: orr w10, w10, #0x40
0x185944378: strh w10, [x8, #20]
0x18594437c: ldr x8, [x8, 49]
0x185944380: cbnz x8, 0x18594435c ; SKCSprite::removeSubsprite(SKCSprite*) + 144
0x185944384: ldrh w9, [x19, #20] EXC_BAD_ACCESS here.
0x185944388: orr w8, w9, #0x2
0x18594438c: strh w8, [x19, #20]
0x185944390: b 0x185944398 ; SKCSprite::removeSubsprite(SKCSprite*) + 204
0x185944394: ldrh w8, [x19, #20]
0x185944398: tbnz w8, #7, 0x1859443ac ; SKCSprite::removeSubsprite(SKCSprite*) + 224
0x18594439c: orr w8, w8, #0x80
0x1859443a0: strh w8, [x19, #20]
0x1859443a4: ldr x19, [x19, 49]
0x1859443a8: cbnz x19, 0x185944394 ; SKCSprite::removeSubsprite(SKCSprite*) + 200
0x1859443ac: sub sp, fp, #16
0x1859443b0: ldp x20, x19, [sp], #16
0x1859443b4: ldp fp, lr, [sp], #16
0x1859443b8: ret lr
SKAction *moveCloud = [SKAction moveToX:destinationX duration:moveDuration];
[cloud runAction:moveCloud completion:^{
[cloud removeFromParent];
}];
- (void)addRopeToCloud:(SKNode *)cloud
{
CGFloat maxY = self.scene.size.height;
CGFloat length = maxY - [self.scene convertPoint:cloud.position fromNode:cloud.parent].y;
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddLineToPoint(path, NULL, 0, length);
SKShapeNode *rope = [[SKShapeNode alloc] init];
rope.path = path;
rope.strokeColor = [UIColor blackColor];
rope.lineWidth = 0.1;
rope.antialiased = YES;
rope.zPosition = -0.01;
CGFloat threadScale = 1 / cloud.xScale;
rope.xScale = threadScale;
rope.yScale = threadScale;
[cloud addChild:rope];
CGPathRelease(path);
}
- (void)addRopeToCloud:(SKNode *)cloud
{
CGFloat maxY = self.scene.size.height;
CGFloat length = maxY - [self.scene convertPoint:cloud.position fromNode:cloud.parent].y;
CGSize ropeSize = CGSizeMake(1.5, length);
SKSpriteNode *rope = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:ropeSize];
rope.anchorPoint = CGPointMake(0.5, 0);
CGFloat ropeScale = 1 / cloud.xScale;
rope.xScale = ropeScale;
rope.yScale = ropeScale;
rope.zPosition = -0.01;
[cloud addChild:rope];
}
最佳答案
当 SKShapeNode 的父级从 iOS 7.1 中的 super View 中删除时,我也会崩溃
我的解决方法是将 SKShapeNode 属性设置为 nil,然后再从父级中删除
关于xcode - Sprite Kit iOS 7.1 在 removeFromParent 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22399278/
我有一个方法可以创建一条应该增加分数的线,并且该方法会间隔调用,只要有两条或更多条相同的线,只要英雄接触到离他最近的线,我就会运行removeFromParent Action 和最远的线被移除。但是
我对函数 removeFromParent 的行为真的很奇怪 lazy var buttonAds: SKSpriteNode = { let n = SKSpriteNode(imageName
我正在为我的一个项目创建一个 JTree,一些节点的名称会动态更改,并且我正在使用此函数更新树: public void updateTree() { for (Sprite spr : sp
我在我的 GameScene 中的随机位置加载了多个 SpriteNode,但实际上是同一个 SpriteNode 添加了多次。我在 touchesEnded 中有一个函数,一旦在与 SpriteNo
我想在我点击场景中的按钮时删除 Sprite 。该按钮仅在玩家与元素发生碰撞时启用。这是添加和删除 Sprite 的代码: var imageShown = false var imageForRid
我注意到我的 Swift 项目中有一个奇怪的行为,并以这种方式在一个空的 SpriteKit 项目中重现了它: class GameScene: SKScene { override func
我的 SpriteKit 游戏中有一个随机生成对象副本的循环,我想使用 removeFromParent() 来删除接触到的对象。但是,当我将它添加到代码中时,该对象并没有被删除。这是生成我的对象的循
阅读 Apple 关于 removeFromParent 的文档说: “从其父节点中删除接收节点。” 这是否意味着节点被销毁了?我是否需要将节点设置为 NULL 以释放其内存? 最佳答案 当没有强引用
我的应用程序根据传入事件动态创建多个 SKNode 和 SKSpriteNode。当我尝试清理过时的节点及其包含的子节点时,我使用node.removeFromParent()。 但是,一旦我尝试在所
我有一个 for 循环实例化 5 个 Sprite for enemy in 1...5 { negativeOnComing = SKSpriteNode(imageNamed: "Enem
在 Swift 中有什么方法可以告诉我什么时候 SKSpriteNode 实际上已经从场景中移除了吗?我不认为它实际上是在调用 removeFromParent 时完成的,但我认为它是稍后完成的,当
subview Controller 可以“解雇自己”吗? ..... 你有一个 View Controller “RedMessage”。你有一个普通的 strong 属性...... @prope
在下面的代码中,如果我按下 removeButton 按钮会消失,但它仍然有效。也许我应该让 if 语句为假,但我不知道该怎么做。 class GameScene : SKScene { va
在我的游戏中,我希望每次我的玩家触摸一个物体时,屏幕都会变白约 0.5 秒,然后恢复正常。 我的代码是: private var crash: SKSpriteNode? func crashadd(
方法 .removeFromParent() 不会移除 Sprite 。怎么了? override func touchesBegan(touches: Set, withEvent event: U
我有一个 SKShapeNode 和一个子 SKEmitterNode。我附加了一个 SKAction 序列,其中最后一个操作是 removeFromParent。节点在没有发射器的情况下表现正确,执
我已将 iPad Air 更新到 7.1,将 Xcode 更新到 5.1。 Xcode 想将我的项目更新为推荐的设置,我同意了。 之后,当我从父节点中删除节点时,我的游戏开始在几个地方崩溃。 这对我来
本文整理了Java中com.ait.lienzo.client.core.shape.wires.WiresShape.removeFromParent()方法的一些代码示例,展示了WiresShap
我有一个 test.c 文件,其中有这个函数调用: functiontest(2,x); 我想删除这个函数调用(通过 llvm 传递),当我尝试像这样使用 removeFromParent() 函数时
我是一名优秀的程序员,十分优秀!