我正在按照教程来漂浮像Periscope一样的心。
要提供基本提示,我发布以下代码
let heartHeight: CGFloat = 18.0
let heartsFile = "heart-bubbles.sks"
class HeartBubblesScene : SKScene {
var emitter: SKEmitterNode?
override func didMoveToView(view: SKView) {
scaleMode = .ResizeFill // make scene's size == view's size
//backgroundColor = UIColor.clearColor()
}
func beginBubbling() {
emitter = SKEmitterNode(fileNamed: heartsFile)
let x = floor(size.width / 2.0)
let y = heartHeight
emitter!.position = CGPointMake(x, y)
emitter!.name = "heart-bubbles"
emitter!.targetNode = self
emitter?.numParticlesToEmit = 1
addChild(emitter!)
emitter?.resetSimulation()
}
在我的viewdidload中,我有这样的代码来呈现场景
heartBubblesView.presentScene(heartBubblesScene)
其中heartBubblesView是一个SKView,我是通过Outlet制作的。
当我来到那个视图控制器时出现问题;突然,它崩溃了,让我看到了逻辑:
SpriteKit`std :: __ 1 :: __ tree_iterator *,int> std :: __ 1 :: __ tree,std :: __ 1 :: allocator> :: find: 0x29fd0f4c< + 0>:ldr r3,[r0,#4]! 0x29fd0f50< + 4>:cbz r3,0x29fd0f82; 1 + 54> 0x29fd0f52< + 6>:ldr.w r12,[r1] 0x29fd0f56< + 10>:mov r9,r0 - > 0x29fd0f58< + 12>:ldr r2,[r3,#0x10] 0x29fd0f5a< + 14>:cmp r2,r12 0x29fd0f5c< + 16>:bhs 0x29fd0f66; 1 + 26> 0x29fd0f5e< + 18>:ldr r3,[r3,#0x4] 0x29fd0f60< + 20>:cmp r3,#0x0 0x29fd0f62< + 22&gt ;:bne 0x29fd0f58; 1 + 12 - ; 0x29fd0f64< + 24>:b 0x29fd0f70; 1 + 36> 0x29fd0f66< + 26>:ldr r2,[r3] 0x29fd0f68< + 28>:mov r9,r3 0x29fd0f6a< + 30>:cmp r2,#0x0 0x29fd0f6c< + 32>:mov r3,r2 0x29fd0f6e< + 34&gt ;:bne 0x29fd0f58; 1 + 12 - ; 0x29fd0f70< + 36>:cmp r9,r0 0x29fd0f72< + 38>:beq 0x29fd0f82; 1 + 54> 0x29fd0f74< + 40>:ldr.w r2,[r9,#0x10] 0x29fd0f78< + 44>:ldr r1,[r1] 0x29fd0f7a< + 46>:cmp r1,r2 0x29fd0f7c< + 48>:它 0x29fd0f7e< + 50>:movlo r9,r0 0x29fd0f80< + 52>:b 0x29fd0f84; 1 + 56> 0x29fd0f82< + 54>:mov r9,r0 0x29fd0f84< + 56>:mov r0,r9 0x29fd0f86< + 58>:bx lr
然后我尝试将deinit添加到上面的类
deinit
{
emitter?.targetNode = nil
emitter!.removeAllChildren()
}
这也不起作用。
答案 0 :(得分:0)
我不知道,但我把这个放在我的视图控制器中的deinitialser方法下,删除所有SKScene的孩子似乎解决了这个问题。
deinit
{
heartBubblesScene.removeAllChildren()
}