使用 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 之上