gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:10:32 24 4
gpt4 key购买 nike

我正在尝试制作一个具有下雨效果的简单应用程序。为了创建这个,我使用了一个简单的 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/

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