公司新闻

手柄菜单向右移动时应该选哪个按钮:十二次方向导航的候选筛选(实例11)

2026-11-07

按钮排列不规则时,按方向键不一定适合简单按列表顺序循环。可以先筛选该方向上的候选,再对前进距离与横向偏离打分。

先固定规则与数据

八个按钮有坐标与可用状态。从当前位置选择严格位于给定方向半平面的可用按钮,得分为前进距离平方加四倍侧向偏离平方,分数最小者胜出,同分按编号;无候选时保持原按钮。

按钮零至七坐标[(50, 30), (20, 30), (40, 20), (10, 20), (30, 30), (20, 0), (50, 10), (30, 20)] 可用状态[True, True, True, True, True, True, True, True];方向零右、一向下、二左、三向上

逐项记录过程

查询1从按钮5向方向0移动,候选[编号,分数][[0, 4500], [2, 2000], [4, 3700], [6, 1300], [7, 1700]],结果按钮6。只在有效方向候选中比较。

查询2从按钮1向方向3移动,候选[编号,分数][[2, 1700], [3, 500], [5, 900], [6, 4000], [7, 500]],结果按钮3。只在有效方向候选中比较。

查询3从按钮0向方向3移动,候选[编号,分数][[2, 500], [3, 6500], [5, 4500], [6, 400], [7, 1700]],结果按钮6。只在有效方向候选中比较。

查询4从按钮6向方向0移动,候选[编号,分数][],结果按钮6。无候选,保留原位置。

查询5从按钮7向方向3移动,候选[编号,分数][[5, 800], [6, 1700]],结果按钮5。只在有效方向候选中比较。

查询6从按钮4向方向3移动,候选[编号,分数][[2, 500], [3, 1700], [5, 1300], [6, 2000], [7, 100]],结果按钮7。只在有效方向候选中比较。

查询7从按钮4向方向3移动,候选[编号,分数][[2, 500], [3, 1700], [5, 1300], [6, 2000], [7, 100]],结果按钮7。只在有效方向候选中比较。

查询8从按钮5向方向3移动,候选[编号,分数][],结果按钮5。无候选,保留原位置。

查询9从按钮7向方向2移动,候选[编号,分数][[1, 500], [3, 400], [5, 1700]],结果按钮3。只在有效方向候选中比较。

查询10从按钮3向方向0移动,候选[编号,分数][[0, 2000], [1, 500], [2, 900], [4, 800], [5, 1700], [6, 2000], [7, 400]],结果按钮7。只在有效方向候选中比较。

查询11从按钮7向方向1移动,候选[编号,分数][[0, 1700], [1, 500], [4, 100]],结果按钮4。只在有效方向候选中比较。

查询12从按钮6向方向2移动,候选[编号,分数][[1, 2500], [2, 500], [3, 2000], [4, 2000], [5, 1300], [7, 800]],结果按钮2。只在有效方向候选中比较。

侧向偏离被乘以四,因此距离近但偏得很远的按钮不一定胜出。被禁用的按钮即使正好在前方,也不能成为目标。

独立复核的方法

先排除方向不符和不可用项,再比较分数。正好与当前位置垂直对齐的按钮不算在所选方向上。当前按钮只是出发坐标,本例查询不改变其他按钮布局。

建议先按原始数据自己算一遍,保留中间状态后再与本例对照。发生分歧时,先寻找最早不同的步骤,检查边界是否包含、编号与坐标方向是否一致,以及状态是在事件之前还是之后更新。最终结果相同并不能替代对过程规则的理解,修改输入后也需要重新核算。

使用范围

这是自定的导航评分,不保证最符合所有界面的视觉直觉。实际菜单还可能使用行列分组、显式邻接或环绕规则,选择前应先明确这些约定。