@bossrus, в CS4 ничего толкового не получится, т.к. документация, пренебрежением которой вас попрекали выше, не соответствует действительности (и
@Oleg Butrin должен был бы это заметить):
Код:
$.writeln( typeof( app.selection[0].clippingPath.clippingType ));
напишет 'Number'. В то время как в CS5, хотя бы, будет написано "object", что (а) отвечает документации (которая осталась неизменна), и (б) заметно облегчит вам жизнь, т.к. у этого объекта "волшебные" "стрингификация" и "нумификация", попробуйте например так (в CS5+, у меня выбран помещенный имидж с обтравкой "detect edges"):
Код:
$.writeln( app.selection[0].clippingPath.clippingType );
$.writeln( app.selection[0].clippingPath.clippingType === ClippingPathType.DETECT_EDGES );
$.writeln( app.selection[0].clippingPath.clippingType.toString() === 'DETECT_EDGES' );
$.writeln( typeof( ClippingPathType.DETECT_EDGES ));
$.writeln( String( ClippingPathType.DETECT_EDGES ));
$.writeln( Number( ClippingPathType.DETECT_EDGES ));
$.writeln( ClippingPathType.DETECT_EDGES.toString());
$.writeln( + ClippingPathType.DETECT_EDGES );
Собственно, про страшный номер при таком раскладе можно забыть.
тоже то ещё извращение — строку в инт, инт в хекс, хекс разделить побайтово, каждый байт в инт, и оттуда в чар
Попробуйте так, по вкусу (на входе-то всегда номер, вообще-то):
Код:
function foo ( n ) {
for ( s = ''; n > 0; n = Math.floor( n / 256 )) s = String.fromCharCode( n % 256 ) + s;
return s;
}
function bar ( n ) {
s = '';
do s = String.fromCharCode( n & 255 ) + s while (( n >>>= 8 ) > 0 );
return s;
}
function baz ( n ) { return decodeURI( n.toString( 16 ).replace( /../g, '%$&' ))}
Второй вариант, вследствие использования битовых операций, ограничен 4-мя байтами, и, в отличие от "foo" и "baz", выдаст неверный ответ для такого, например, аргумента:
Код:
0x10000 * 1852796517 + 0x3132
т.е. 6-ти байт. Дело в том, что у хулиганья из Адоби (а кто же они, с такими "юмористическими" константами) есть небольшой простор, т.к. целые числа хранятся точно, если помещаются в 53 бита мантиссы типа Double. Теоретически они могли использовать в подобных численных константах до 6 букв включительно. Но вряд ли.