尝试添加已经有父级错误的 SKNode

2024-04-19

我在尝试运行我的游戏时收到错误:“尝试添加已有父节点的 SKNode”。

如果我将 SKSpriteNode 在本地添加到函数中,它就可以正常运行。但是当我尝试在全球范围内声明它时,我收到了该错误。任何解决此错误的帮助都会很棒。我认为这与self.bee.removeFromParent()但我无法让它发挥作用。

let bee = SKSpriteNode(imageNamed: "Bee")

runAction(SKAction.repeatActionForever(
    SKAction.sequence([
        SKAction.runBlock(addBee),
        SKAction.waitForDuration(0.5)
        ])
    ))

func addBee() {

    bee.name = "Bee"
    let actualY = random(min: 0, max: siz    e.height+bee.size.height ) // random

    bee.position = CGPoint(x: size.width + bee.size.width/2, y: actualY)
    self.addChild(bee)

    let slopeToPlayer = (bee.position.y - player.position.y) / (bee.position.x - player.position.x)
    let constant = bee.position.y - slopeToPlayer * bee.position.x

    let finalX : CGFloat = bee.position.x < player.position.x ? 500.0 : -500.0 // Set it to somewhere outside screen size

    let finalY = constant +  slopeToPlayer * finalX

    let distance = (bee.position.y - finalY) * (bee.position.y - finalY) + (bee.position.x - finalX) * (bee.position.x - finalX)
    let beeSpeed = random(min: CGFloat(50), max: CGFloat(150))
    let timeToCoverDistance = sqrt(distance) / beeSpeed

    let moveAction = SKAction.moveTo(CGPointMake(finalX, finalY), duration: NSTimeInterval(timeToCoverDistance))
    let removeAction = SKAction.runBlock { () -> Void in
        self.bee.removeFromParent()
    }
    bee.runAction(SKAction.sequence([moveAction,removeAction]))


}

您不能添加相同的单个实例SKNode两次。这就像说一个人可以同时存在于两个地方一样。 当您创建Bee node在全球范围内,在addBee函数,您正在尝试添加相同的实例Bee一次又一次。

如果要添加多个节点,则应该创建节点的单独实例。这就是从函数内部本地创建它们的原因。

func addBee() {

    let bee = SKSpriteNode(imageNamed: "Bee")
    bee.name = "Bee"
    addChild(bee)
}

获取碰撞节点的参考。

func didBeginContact(contact: SKPhysicsContact) {

    var bodyA : SKPhysicsBody!
    var bodyB : SKPhysicsBody!

    if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask
    {
        bodyA = contact.bodyA!
        bodyB = contact.bodyB!
    }
    else
    {
        bodyB = contact.bodyA!
        bodyA = contact.bodyB!
    }

    // The two nodes that have collided
    let node1 = bodyA.node 
    let node2 = bodyB.node

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试添加已经有父级错误的 SKNode 的相关文章

  • Objective-c 中的块递归

    当执行涉及 Objective C 块的递归时 我在 iOS 应用程序中收到 EXC BAD ACCESS 信号 这是简化的代码 void problematicMethod FriendInfo friendInfo onComplete
  • iPhone UINavigationBar 使用 [UINavigationBar 外观] 更改所有控制器的字体样式

    我知道我可以单独更改导航栏的字体 如本答案所述 更改导航栏的字体 https stackoverflow com questions 5832036 change the navigation bars font 目前我正在使用一种更全局的
  • 在iOS上,“添加到主页”缓存保存在哪里,如何清除它?

    我正在 iPad iOS v7 上制作一个 html5 游戏 当我将其添加到主页时 它非常顽固地释放缓存 如果我在 Safari 中查看它 这会按照您所期望的方式工作 如果我刷新一次或两次 页面就会以最新状态缓存 但在主页上却是另一回事 它
  • 如何在 iOS 中更改部分透明图像的颜色?

    我有一个具有部分透明度的单色图像 我有正常版本和 2X 版本的图像 我希望能够用代码将图像着色为不同的颜色 下面的代码适用于普通图像 但 2X 最终会出现伪影 正常图像可能有类似的问题如果是这样 由于分辨率的原因我无法检测到它 UIImag
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • 使用 Interface Builder 创建 UIScrollView 的步骤

    我正在尝试使用 UIScrollView 但似乎有一些基本的事情我不理解 假设我想在我的 iPhone 应用程序中使用 UIScrollView 我有一个充满按钮的视图 尺寸为 320x700 显然 这对于 320x480 的 iPhone
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • iOS 中的构建对象文件扩展名是什么?

    当我在项目中构建java对象类时 将创建带有 class扩展名的构建文件 并且人类不可读 快速构建文件怎么样 example car java gt build gt car class 构建后会是什么 car swift gt build
  • 如何恢复消耗品应用内购买?

    我正在开发一款 iOS 游戏 用户可以通过应用内消耗品购买一定数量的内部货币 比如 1000 金币 如果用户想将余额从一台设备转移到另一台设备 如何恢复消耗品购买 在苹果的文档中 它说我们必须使用我们自己的服务器 但是如何获取用户的Appl
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 防止 AlertView 被解雇

    任何人都可以帮助我防止在其按钮单击事件上解雇警报视图吗 我有一个 textview 作为我的alertView 的子视图 如果 textview 值为 nil 我不想关闭它 因为这是一个非常老的问题 但我得到了一个解决方案 并且如果其他开发
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • NVActivityIndi​​catorView 仅适用于特定视图

    我正在使用这个库https github com ninjaprox NVActivityIndi catorView https github com ninjaprox NVActivityIndicatorView用于显示加载指示器
  • 指定访问组时出现 KeychainItemWrapper 错误

    相当长一段时间以来 我一直在使用 KeychainItemWrapper 的 ARC 版本成功读取和写入私有钥匙串项目 我现在正在努力将我的 iOS 应用程序转换为使用共享访问组 以便我的 2 个共享相同应用程序前缀的应用程序可以访问钥匙串
  • 在 UIImage 顶部绘制透明圆圈 - iPhone SDK

    我在尝试找出如何在 UIImageView 中的 UIImage 顶部绘制透明圆圈时遇到了很多麻烦 谷歌给了我线索 但我仍然找不到有效的例子 有没有人知道的例子可以证明这一点 最简单的方法就是创建一个半透明的方形 UIView 然后将其图层
  • 为什么我的视图仍然以横向呈现?

    我的视图是由导航控制器控制的 因此我将导航控制器支持的方向设置为明确的纵向和纵向UpSideDown 这可以工作 但是如果调用视图时前一个视图处于横向状态 它将以横向方式呈现并保持横向状态 直到设备旋转 如何防止这种情况发生 这是我的代码
  • 使用基于约束的布局自动调整 NSTokenField 的大小

    有没有办法自动调整大小height使用约束的 NSTokenField 保持宽度恒定 sizeToFit应该有效 但事实并非如此 如果我设置一个约束来保持宽度不变并调用此方法 它将忽略约束并仅调整宽度大小 当我想要的是仅调整高度大小时 基于
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐

  • OpenCV:将 cvGoodFeaturesToTrack 与 C++ mat 变量结合使用

    我正在尝试使用cvGoodFeatureToTrackVisual Studio 2010 中的函数 图像类型为Mat 我见过的大多数例子都使用IplImage指针 现在我有这个 int w h video frame size Mat g
  • 类型错误:无法腌制 dict_items 对象

    Why does pickle dumps items 失败与TypeError can t pickle dict items objects在 Python 3 5 2 中但不在 Python 2 7 12 中 用 酸洗 字典 pick
  • ITMS-90909:Xamarin Forms 应用程序中不推荐使用 iOS 的 API

    任何人都可以建议如何处理我将 Xamarin Forms 应用程序提交到 iOS 商店时收到的这条消息吗 对可能的重复进行评论 这个问题之前曾被问过 但没有得到解答 我认为不存在已答复的重复项 这是一个已知问题 最近由 Xamarin 团队
  • 建立数据库连接 Amazon EC2 时出错 - 移动我的 WordPress 博客后

    将我的 WordPress 博客移至 Amazon EC2 后 我收到错误 建立数据库连接时出错 我已经检查了 wp config php 文件并且设置正常 本地主机 密码和用户名 我已经阅读了这里的许多问题和答案 但没有任何帮助我 我有
  • 在 Web API 中使用 ExceptionFilterAttribute

    我正在尝试在创建的 Web API 中实现错误处理 需要以 JSON 格式返回异常详细信息 我创建了 BALExceptionFilterAttribute 像 public class BALExceptionFilterAttribut
  • 我们可以在 PHP 的任何函数中传递数组作为参数吗?

    我有一个向用户发送邮件的函数 我想将其参数之一作为 id 数组传递 这可以吗 如果是的话 该怎么办 假设我们有一个函数 function sendemail id userid 在示例中 id应该是一个数组 您可以传递一个数组作为参数 它是
  • 类型参数 T 使用 Eclipse 将类型 T 隐藏在 T[] toArray(T[] a) 中

    将 eclipse 4 2 与 Java 7 一起使用并尝试实现 List 接口的以下方法时 我收到了警告 public
  • 访问 sails.js 的基础 http 服务器

    您好 有没有办法访问 sails 的基本 http 服务器上下文 我想在我的应用程序中使用binaryJS 并且在 gettig 入门指南中 他们正在谈论自己创建服务器 如果您有一个现有的 Express 应用程序 其中包含以下行 var
  • 如何加快这段 Java 代码的速度?

    我正在尝试测试 Java 执行一项简单任务的速度有多快 将一个大文件读入内存 然后对数据执行一些无意义的计算 所有类型的优化都很重要 无论是以不同的方式重写代码还是使用不同的 JVM 欺骗 JIT 输入文件是一个由逗号分隔的 5 亿长的 3
  • 为什么 $count=true 的 OData 查询返回一个对象?

    我试图弄清楚如何正确支持返回 OData API 中 已过滤的 数据集中的项目数 我的理解是添加 count true查询字符串的参数应该允许这样做 现在 基于官方文档中教程的示例 https www odata org getting s
  • SQL 2008 存储过程中的可选 where 子句/参数?

    我正在编写一些更新表的代码 根据用户想要执行的操作 它会更新一大组记录或较小的记录 描述因素是组ID 用户可以选择是更新表中的所有记录 还是仅更新具有该 groupID 的记录 我想对两个实例使用相同的存储过程 其中可能有一些逻辑来区分场景
  • JQuery html() 与 innerHTML

    我可以完全依赖 jQuery 吗html 方法的行为与innerHTML 有什么区别吗innerHTML和 jQuery 的html 方法 如果这些方法都做同样的事情 我可以使用 jQuery 的吗 html 方法代替innerHTML 我
  • 获取 Firefox 中扩展的附加 ID

    我想在浏览器选项卡中打开扩展作为普通的 html 页面 以便我可以使用 selenium WebDriver 自动化它 在 Firefox 中 可以使用这样的链接来完成 moz extension f1b30486 cd88 4319 bb
  • 在生产模式下写入全局变量有什么问题?

    我看了一下连接mongodb的示例代码 看到了一句看不懂的内容 为什么在开发的情况下使用全局变量是安全的 又为何没有投入生产 您不需要理解代码 请只看评论部分 import MongoClient from mongodb let clie
  • 为什么主要编译器对 stdint.h 使用 typedef 而对 stdbool.h 使用 #define?

    我刚刚注意到 gcc 和 clang 似乎都对 stdint h 使用 typedef 但对 stdbool h 使用 define 例子 clang 的 stdint h https clang llvm org doxygen stdi
  • 应用程序中有多少个并发线程才算是很多?

    5 100 1000 我想 这取决于 但是取决于什么呢 作为服务器守护进程 服务运行的应用程序有什么常见之处 什么是硬限制 鉴于机器可以处理总体工作负载 我如何确定开销在多少个线程时开始对性能产生影响 操作系统之间的重要区别是什么 还应该考
  • 从 Windows 任务列表返回命令行

    我正在寻找一个命令来获取在 Windows 任务管理器中写入的命令行 我正在使用tasklist fo CSV v但它不提供我查看任务管理器时得到的命令行 我附上一张图片来说明我的意思 它是最右边的一列 我在系统调用中需要这些信息r 只是为
  • 如何在eclipse中配置ADT插件

    开发者网站上有以下说明 配置 ADT 插件 一旦 Eclipse 重新启动 您必须指定 Android SDK 目录的位置 在出现的 欢迎使用Android开发 窗口中 选择 使用现有的SDK 浏览并选择您最近下载并解压的 Android
  • 限制多处理python中的进程数量

    我的要求是生成hundreds of HTTP POST requests per second 我正在使用它urllib2 def send req urllib2 Request url req add data data respon
  • 尝试添加已经有父级错误的 SKNode

    我在尝试运行我的游戏时收到错误 尝试添加已有父节点的 SKNode 如果我将 SKSpriteNode 在本地添加到函数中 它就可以正常运行 但是当我尝试在全球范围内声明它时 我收到了该错误 任何解决此错误的帮助都会很棒 我认为这与self