Первым делом изменим левый и правый край области обреза:
eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.left += -(xinc/2)'); eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.right += (xinc/2)');
Если мы перестарались, то подправим ширину обреза:
if (eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.width < 0')){lyr.clip.width = 0}
Теперь проверим, не достигли ли мы конечного условия:
if (((xinc < 0) && (eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.width > stopwidth'))) || ((xinc > 0) && (eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.width < stopwidth'))))
Если нет, то рекурсивно вызовем функцию:
setTimeout('curtainWidth("'+layerName+'",'+xinc+','+inctime+','+stopwidth+')',inctime);
Вот, что у нас получилось:
function curtainWidth(layerName,xinc,inctime,stopwidth) { eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.left += -(xinc/2)'); eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.right += (xinc/2)'); if (eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.width < 0')){lyr.clip.width = 0} if (((xinc < 0) && (eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.width > stopwidth'))) || ((xinc > 0) && (eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.clip.width < stopwidth')))) { setTimeout('curtainWidth("'+layerName+'",'+xinc+','+inctime+','+stopwidth+')',inctime); } }