MaxScript如何获取SubRollout中子滚动面板的实际显示排序
问题原因
mainRolTest.mainSubRollout.rollouts 存储的是子滚动面板的初始添加顺序,MAXScript原生设计下该数组不会跟随用户拖动调整的显示顺序更新。
解决方法
子滚动面板的实际显示顺序和自身Y轴坐标直接相关:界面上越靠上的面板,pos.y 属性值越小,按该值升序排列所有子面板即可得到当前实际显示顺序。
实现代码如下:
-- 定义获取排序后子面板的函数 fn getSortedSubRollouts subRolloutControl = ( local allSubRolls = copy subRolloutControl.rollouts -- 按Y坐标从小到大排序(对应界面从上到下的顺序) qsort allSubRolls fn sortCompare rollA rollB = if rollA.pos.y < rollB.pos.y then -1 else 1 return allSubRolls ) -- 调用示例 getSortedSubRollouts mainRolTest.mainSubRollout
将Sub 2拖动到顶部后调用上述函数,返回结果即为预期的 #(Rollout:subRollout2, Rollout:subRollout1)。
内容的提问来源于stack exchange,提问作者Ste
相关产品推荐
相关产品推荐

