我需要在一个按钮上创建/上传/开始路点任务。当用户按下按钮时,无人机应根据当前位置向上移动一定数量的点。用户可以停止任务,并再次启动新的任务。下面是我的逻辑:
operator
G 211上添加侦听器到任务
missionOperator.addListener(toUploadEvent: self, with: DispatchQueue.main) { (event) in
if event.currentState == .readyToExecute {
self.startMission()
}
}我阅读了几天的文档,并试图了解这件事是如何工作的,但我显然遗漏了一些东西。侦听器是在路径点任务操作符上创建的,但是如果我在加载任务之前创建侦听器,则不会调用它们。如果每次加载任务时都创建侦听器,那么startMission()将被多次调用(第一次调用任务,但在一个任务停止或完成后,下一次调用startMission()两次)
所以,我想我的问题是:什么是添加监听器并删除它们的合适时机,因为我从监听器中调用了startMission()?实际上,在一个按钮上插入/上传/开始任务,并能够多次执行任务的合适方法是什么?
发布于 2020-05-14 10:45:06
当上传成功且事件状态为readyToExecute时,您需要删除上传侦听器。同样,当事件包含错误时,或者状态是readytoupload/不支持/断开连接时。几乎在每一种情况下,除了它还在状态‘上传’。
启动任务时,为执行事件添加一个侦听器,为已完成的事件添加一个监听器。在任务停止/取消、出错或成功完成任务时,再次删除这些任务。
即使您使用Swift,我还是建议查看更完整的Objective示例代码,其中包括几种不同类型任务的示例。
https://stackoverflow.com/questions/60830691
复制相似问题