Swift:错误:线程 1:更新函数上的 EXC_BAD_INSTRUCTION

标签 swift xcode

我正在尝试制作一个具有下雨效果的简单应用程序。为了创建这个,我使用了一个简单的 Spark 图像并使其从云中落下。然而,当我尝试使用随机函数为 Spark 出现的 x 坐标位置随机生成一个随机数时,xCode 抛出一个意外错误:

线程 1:EXC_BAD_INSTRUCTION(代码=EXC_i386_INVOP,子代码=0x0)

以下是用于创建这个简单应用程序的代码:

import Foundation
import SpriteKit

class Particles: SKScene{

    let cloud = SKSpriteNode(imageNamed: "cloud")

    override func didMoveToView(view: SKView) {
        cloud.size = CGSize(width: 210, height: 100)
        cloud.position = CGPoint(x:self.frame.size.width/2, y:self.frame.size.height*0.9)
        cloud.anchorPoint = CGPoint(x:0.5,y:0.5)
        self.addChild(cloud)

//        var rain = SKEmitterNode(fileNamed: "rainParticle.sks")
//        rain!.position = CGPoint(x:cloud.position.x, y:cloud.position.y-cloud.size.height/2)
//        self.addChild(rain!)
    }

    func particle_spawn(pos_x:Int){
        let particle = SKSpriteNode(imageNamed: "spark")
        particle.name = "spark"
        particle.size = CGSize(width: 10, height:10)
        particle.position = CGPoint(x: cloud.position.x+CGFloat(pos_x), y: cloud.position.y-cloud.size.width/2)
        self.addChild(particle)
        let fall = SKAction.moveTo(CGPoint(x:0,y:0), duration: 1)
        particle.runAction(fall)
    }

    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */
        let distance_change = Int(arc4random_uniform(UInt32(40))-20)
        particle_spawn(distance_change)
    }

}

有谁知道如何修复这个错误吗?如果是,您能解释一下这个错误的含义以及为什么我会得到它并提供尽可能多的解释吗?

注意:英语不是我的母语。

谢谢大家!

最佳答案

我假设你会崩溃,因为你基本上每 1 秒创建 60 个 Spark SKSpriteNode。 (每帧调用更新 60 次)。

假设您玩 10 秒,您将创建 600 个 SKSpriteNode。

通常你会像你所做的那样创建雨粒子(并注释掉)

 let rain = SKEmitterNode(fileNamed: "rainParticle.sks")
 ...

在 rainParticle.sks 文件中,您可以设置诸如生成速率、生成粒子数量、移动速度等内容。

http://www.ioscreator.com/tutorials/particle-emitter-tutorial-sprite-kit-swift

如果您使用 Sprite 套件粒子文件,则有一个专门用于下雨的模板,您可以根据自己的喜好更改/调整该模板。

希望这有帮助。

关于Swift:错误:线程 1:更新函数上的 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38778955/

相关文章:

ios - 从字典中解包可选类型 Any

ios - 从服务器下载图像后动态制作表格 View 单元格高度

iphone - 自动更改到下一个 ViewController

ios - 从 iOS 11 发布到 iOS 10 后,是否可以降低 iOS 应用程序的最低部署目标

ios - 为什么我的 UICollectionView 无法访问我在 for 循环中创建的数组 - fatal error : Index out of range

iphone - 在 FTP 上上传多个文件

ios - 点击重复动画

ios - Swift 3 为 facebook 登录返回 "Type of expression is ambiguous without more context"错误

swift - 更改 NSButton 的图像

xcode - Xcode 4中的类模型在哪里?