如何同时显示多对象操作控件,实现绕可移动点的旋转功能
实现方案
你要的效果完全可以实现,两种方案可选,你可以根据自身需求选择:
方案1:保留现有逻辑,直接实现控件同时显示
不需要重构现有代码,仅修改控件显隐逻辑即可实现:
- 给红色矩形、蓝色旋转点两个元素都设置
hasControls: true、selectable: true属性,同时给两个元素绑定选中联动事件:任意一个元素被选中时,手动触发另一个元素的控件显式渲染,跳过默认的「仅聚焦元素显示控件」逻辑 - 也可以直接重写两个元素的
controls配置中所有手柄的visible属性,硬编码为true,不管元素是否获得焦点,所有操作手柄都会持续显示,仅需新增3-5行代码即可实现
方案2:优化旋转逻辑,减少整体代码量
如果不想维护两个元素的联动逻辑,可以直接把旋转锚点合并到矩形的自定义控件里:
- 给红色矩形添加自定义控件替代独立的蓝色旋转点,配置自定义控件的
actionHandler实现拖拽修改旋转原点的逻辑,旋转时直接读取该自定义控件的坐标作为旋转原点即可 - 这种方案不需要额外维护独立的旋转点元素,所有操作手柄天然都属于矩形元素,默认就会同时显示,整体代码量比现有实现少30%左右,后续维护也更简单
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

