在许多情况下,我们会用到比如Film Loop的序列动画。这时如果构成序列动画的每一张图形演员的注册点不统一,那么动画的效果就会大打折扣。虽然Director演员对应的编辑器为我们提供了调整注册点的工具,但是如果需要调整大量的图片则会非常的繁琐,不过我们可以写一个批处理程序来进行批量调整。
on AGSetRegpoint fMembersInfoList,fPointSetType
if ilk(fMembersInfoList[1])=#list then
if fMembersInfoList[1].count>=2 then
tcastnum=fMembersInfoList[2]
else
tcastnum=1
end if
repeat with i in fMembersInfoList[1]
if fPointSetType=#centered then
member(i,tcastnum).centerRegPoint =true
else
member(i,tcastnum).RegPoint =fPointSetType
end if
end repeat
else
if fMembersInfoList.count>=3 then
tcastnum=fMembersInfoList[3]
else
tcastnum=1
end if
repeat with i=fMembersInfoList[1] to fMembersInfoList[2]
if fPointSetType=#centered then
member(i,tcastnum).centerRegPoint =true
else
member(i,tcastnum).RegPoint =fPointSetType
end if
end repeat
end if
end
该函数的使用方法如下:
setregpoint([[1,2,3],],regpointSetMethod)
setregpoint([startMemberNum,endMemberNum,],regpointSetMethod)
其中参数CastNum可选,如果不传递此参数则默认为1号演员表,regpointSetMethod的值可以为#centered或者一个point。
例如,以下语句将2号演员表中的1、3、4号演员的注册点居中: