使用 gotoPopulation 时将代理保持在同一位置

Posted

技术标签:

【中文标题】使用 gotoPopulation 时将代理保持在同一位置【英文标题】:Keeping agent in the same location when using gotoPopulation 【发布时间】:2022-01-11 12:26:39 【问题描述】:

我在另一个代理(船)内有一组代理(容器)。这是必需的,以便容器将随船移动。一旦船靠岸,我希望集装箱从 'ship' 中的人口变为 'main' 中的人口。当我使用以下内容时

gotoPopulation(main.containers_main);

要将容器代理发送到 main 中的一组容器,容器将移动到 main 环境中的 0,0。

以上代码放在容器代理中。

有没有办法改变代理人的人口但将其保持在同一位置?

谢谢

【问题讨论】:

【参考方案1】:

我不这么认为。至于代理,没有“相同的位置”,它们总是相对于某物(以前相对于Ship,现在相对于main)。

但您可以通过以下方式手动将它们定位在相同(明显的)位置:

    main 上获取容器的相对位置,同时仍在Ship 中:getX() + ship.getX()(对于 Y,假设船舶嵌入 Main 中,容器嵌入 Ship 中)--> 短暂存储为 double myPosX 像上面那样移动到主要的新人口 相对于 Main 设置“新”位置:setX(myPosX)

这听起来很麻烦,但很有意义,一旦您了解嵌入式代理的位置总是相对于它们的父级。删除父级,您需要考虑调整相对位置以使它们保持在(看似)“相同”位置

【讨论】:

谢谢本杰明,这很有道理。

以上是关于使用 gotoPopulation 时将代理保持在同一位置的主要内容,如果未能解决你的问题,请参考以下文章

使用 pushViewController 然后 popViewController 时将工具栏保持在 UIView 的顶部?

更改值时将颜色条标签保持在旧位置

带有引导警报的Angularjs-向下滚动时将警报保持在屏幕上

IOS - 滚动时将 UIView 保持在 UITableView 之上

iOS Swift 3在显示键盘时将TableView内容保持在正确的位置

Android 通知单击保持堆栈并在需要时将应用程序置于最前面。如果特定活动在顶部,则传递数据