我正在按照教程浮动像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; <+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; <+26> 0x29fd0f5e <+18>:ldr r3,[r3,#0x4] 0x29fd0f60 <+20>:cmp r3,#0x0 0x29fd0f62 <+22>:bne 0x29fd0f58; <+12> 0x29fd0f64 <+24>:b 0x29fd0f70; <+36> 0x29fd0f66 <+26>:ldr r2,[r3] 0x29fd0f68 <+28>:mov r9,r3 0x29fd0f6a <+30>:cmp r2,#0x0 0x29fd0f6c <+32>:mov r3,r2 0x29fd0 34>:bne 0x29fd0f58; <+12> 0x29fd0f70 <+36>:cmp r9,r0 0x29fd0f72 <+38>:beq 0x29fd0f82; <+54> 0x29fd0f74 <+40>:ldr.w r2,[r9,#0x10] 0x29fd0f78 <+44>:ldr r1,[r1] 0x29fd0f7a <+46>:cmp r1,r2 0x29fd0f7c <+48>:它lo 0x29fd0f7e <+50>:移动r9,r0 0x29fd0f80 <+52>:b 0x29fd0f84; <+56> 0x29fd0f82 <+54>:移动r9,r0 0x29fd0f84 <+56>:移动r0,r9 0x29fd0f86 <+58>:bx lr
然后我尝试将deinit添加到上述类中
deinit
{
emitter?.targetNode = nil
emitter!.removeAllChildren()
}
那也不行。
我不知道,但是我将其放在视图控制器的deinitialser方法下面,删除了该SKScene的所有子级,似乎可以解决此问题。
deinit
{
heartBubblesScene.removeAllChildren()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句