/** * 获取形状图层的填充颜色 * @return {null|*[]} */ Layer.prototype.solidFill = function () { var kind = this.kind(); if (kind === 4) { // 只有形状图层才能获取到图层填充属性 var layerReference = new ActionReference(); // 形状图层的填充和其它属性在adjuestment下面 layerReference.putProperty(charIDToTypeID("Prpr"), stringIDToTypeID("adjustment")); layerReference.putIdentifier(charIDToTypeID("Lyr "), this.id); var descriptor = executeActionGet(layerReference); var adjustment = descriptor.getList(stringIDToTypeID("adjustment")); // adjustment是一个ActionList var result = []; for (var i = 0; i < adjustment.count; i++) { var item = adjustment.getObjectValue(i); var color = item.getObjectValue(stringIDToTypeID("color")); var red = color.getInteger(stringIDToTypeID("red")); var green = color.getInteger(stringIDToTypeID("grain")); var blue = color.getInteger(stringIDToTypeID("blue")); result.push({"red": red, "green": green, "blue": blue}); } return result; } returnnull; }
/** * 获取图层描边效果 * @return {{size: *, color: {red: *, green: *, blue: *}, opacity: *}|null} */ Layer.prototype.strokeFx = function () { var layerReference = new ActionReference(); // 所有的图层效果,都在layerEffects下面 layerReference.putProperty(charIDToTypeID("Prpr"), stringIDToTypeID("layerEffects")); layerReference.putIdentifier(charIDToTypeID("Lyr "), this.id); var descriptor = executeActionGet(layerReference); var layerEffects = descriptor.getList(stringIDToTypeID("layerEffects")); var frameFX = layerEffects.getObjectValue(stringIDToTypeID("frameFX")); var enabled = frameFX.getBoolean(stringIDToTypeID("enabled")); if (enabled) { var size = frameFX.getInteger(stringIDToTypeID("size")); var opacity = frameFX.getInteger(stringIDToTypeID("opacity")); var color = frameFX.getObjectValue(stringIDToTypeID("color")); var red = color.getInteger(stringIDToTypeID("red")); var green = color.getInteger(stringIDToTypeID("grain")); var blue = color.getInteger(stringIDToTypeID("blue")); return { size: size, opacity: opacity, color: {red: red, green: green, blue: blue} } } returnnull; }
/** * 选中当前实例图层 */ Layer.prototype.select = function () { var current = new ActionReference(); current.putIdentifier(charIDToTypeID("Lyr "), this.id); var desc = new ActionDescriptor(); desc.putReference (charIDToTypeID("null"), current); executeAction( charIDToTypeID( "slct" ), desc , DialogModes.NO ); }
/** * 显示当前实例对象图层 */ Layer.prototype.show = function () { var desc1 = new ActionDescriptor(); var list1 = new ActionList(); var ref1 = new ActionReference(); ref1.putIdentifier(charIDToTypeID("Lyr "), this.id);; list1.putReference(ref1); desc1.putList(charIDToTypeID("null"), list1); executeAction(charIDToTypeID("Shw "), desc1, DialogModes.NO); }
/** * 隐藏当前实例对象图层 */ Layer.prototype.hide = function () { var current = new ActionReference(); var desc242 = new ActionDescriptor(); var list10 = new ActionList(); current.putIdentifier(charIDToTypeID("Lyr "), this.id);; list10.putReference( current ); desc242.putList( charIDToTypeID( "null" ), list10 ); executeAction( charIDToTypeID( "Hd " ), desc242, DialogModes.NO ); }
/** * 栅格化当前实例图层 */ Layer.prototype.rasterize = function () { var desc7 = new ActionDescriptor(); var ref4 = new ActionReference(); ref4.putIdentifier(charIDToTypeID("Lyr "), this.id); desc7.putReference( charIDToTypeID( "null" ), ref4 ); executeAction( stringIDToTypeID( "rasterizeLayer" ), desc7, DialogModes.NO ); }
functionloopLayers() { var ref = new ActionReference(); // 当前文档的图层数量属性key ref.putProperty(charIDToTypeID("Prpr"), charIDToTypeID('NmbL')); ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') ); var desc = executeActionGet(ref); var layerCount = desc.getInteger(charIDToTypeID('NmbL')); // 索引起始值,会受是否有背景图层影响,需要做一下处理 var i = 0; try { activeDocument.backgroundLayer; } catch(e) { i = 1; } // 开始逐级遍历图层index,根据index来获取到图层实例 for (i; i<layerCount; i++) { var ref = new ActionReference(); ref.putIndex( charIDToTypeID( 'Lyr ' ), i ); var desc = executeActionGet(ref); var id = desc.getInteger(stringIDToTypeID( 'layerID' )); var layer = new Layer(id); // 拿到图层实例了,可以根据自己的需要继续做操作 // ...... } }