【photoshop Action Manager】对象反射属性方法

通过反射接口探索对象属性与方法:实例解析ArtLayer对象
本文介绍了如何使用JavaScript的反射API获取对象如ArtLayer的属性和方法,通过`reflectProps`和`reflectMeths`函数实现,实例演示了获取`activeDocument.activeLayer`的详细信息。

如何获取对象的属性和方法,可以通过反射接口

比如:获取layer对象的属性和方法:

function reflectProps(obj) {
    var props = obj.reflect.properties;
  
for (var i = 0, len = props.length; i < len; i++) {
        try {
            $.writeln(props[i].name + ' = ' + obj[props[i].name]);
              WriteData(props[i].name + ' = ' + obj[props[i].name])
        } catch (e) {}
    }
}

function reflectMeths(obj) {
    var meths = obj.reflect.methods;
    for (var i = 0, len = meths.length; i < len; i++) {
        try {
            $.writeln(meths[i].name + '();');
            WriteData(meths[i].name + '();')
        } catch (e) {}
    }
}
function WriteData(Txt)
{  
	var file = new File(Folder.desktop + "/rflection.txt");  
	 file.open("a", "TEXT",null);  
      file.encoding = "UTF8";  
 	file.seek(0,2);  
 	$.os.search(/windows/i)  != -1 ? file.lineFeed = 'windows'  : file.lineFeed = 'macintosh';  
	file.writeln(Txt);  
	file.close();  
} 
// Example of use:
   //     var r = new ActionReference();  
   //      var d = new ActionDescriptor();  	 
	//	r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum")); 
     //     d.putReference(charIDToTypeID('null'), r);   
     //   var options = executeAction(charIDToTypeID( "getd" ), d, DialogModes.NO);
        //app.activeDocument.activeLayer
        
 var lay =app.activeDocument.activeLayer
 WriteData("\n***************"+"["+lay.constructor.name+" ]"+" properties **********************\n")
 reflectProps(lay);
 WriteData("\n***************"+"["+lay.constructor.name+" ]"+"  methods **********************\n")
  reflectMeths(lay);


***************[ArtLayer ] properties **********************

fillOpacity = 100
grouped = false
isBackgroundLayer = true
pixelsLocked = false
positionLocked = true
transparentPixelsLocked = true
kind = LayerKind.NORMAL
typename = ArtLayer
name = 背景
allLocked = false
blendMode = BlendMode.NORMAL
linkedLayers = 
opacity = 100
visible = true
id = 1
itemIndex = 1
bounds = 0 px,0 px,800 px,600 px
boundsNoEffects = 0 px,0 px,800 px,600 px
xmpMetadata = [XMP Metadata]
parent = [Document 未标题-1]
__proto__ = [object Object]

***************[ArtLayer ]  methods **********************

applyStyle();
applyStyleFile();
saveStyleFile();
clear();
copy();
cut();
merge();
rasterize();
applyAverage();
applyGaussianBlur();
applyLensBlur();
applyBlur();
applyBlurMore();
applyMotionBlur();
applyRadialBlur();
applySmartBlur();
applyDiffuseGlow();
applyDisplace();
applyGlassEffect();
applyOceanRipple();
applyPinch();
applyPolarCoordinates();
applyRipple();
applyShear();
applySpherize();
applyTwirl();
applyWave();
applyZigZag();
applyAddNoise();
applyDespeckle();
applyDustAndScratches();
applyMedianNoise();
applyClouds();
applyDifferenceClouds();
applyLensFlare();
applyTextureFill();
applySharpen();
applySharpenEdges();
applySharpenMore();
applyUnSharpMask();
applyDeInterlace();
applyNTSC();
applyCustomFilter();
applyHighPass();
applyMaximum();
applyMinimum();
applyOffset();
adjustLevels();
autoLevels();
autoContrast();
adjustCurves();
adjustBrightnessContrast();
adjustColorBalance();
desaturate();
selectiveColor();
mixChannels();
invert();
equalize();
threshold();
posterize();
photoFilter();
shadowHighlight();
unlink();
link();
translate();
rotate();
resize();
duplicate();
move();
remove();
 

### 设置和使用 Photoshop Action Manager 坐标的指南 在 PhotoshopAction Manager 中,可以利用坐标来精确控制各种操作的位置参数。这不仅提高了自动化脚本的准确性,还增强了灵活性。 #### 使用绝对坐标定位对象 当录制动作时,如果选择了特定工具并执行了涉及位置的操作(例如创建形状、应用滤镜等),Action Manager 可记录下这些命令的确切数值。对于支持坐标的命令,在弹出的相关对话框中会看到 X 和 Y 轴上的具体数值输入选项[^1]。 ```javascript // JavaScript Code Example for setting coordinates via scripting (not directly related to Actions but demonstrates concept) app.activeDocument.artLayers.add(); var layerRef = app.activeDocument.artLayers.getByName("Layer 1"); layerRef.translate(-50, -75); // Move the object by specified amount on both axes. ``` 为了确保每次运行该动作都能获得一致的结果,建议在设计阶段就确定好目标区域内的固定参照点作为起始位置,并据此调整后续步骤中的相对位移量。 #### 结合条件语句实现动态坐标处理 除了静态设定外,还可以通过编写更复杂的逻辑结构——比如 If/Else 或者循环体——让程序根据实际情况自动计算所需移动的距离或方向。虽然原生的动作功能不直接提供此类高级特性,但是借助于附加插件或是外部脚本语言接口(如 ExtendScript Toolkit),则完全可以达成这一目的[^2]。 需要注意的是,某些情况下可能需要先选定具体的图层或者路径才能使基于坐标的指令生效;另外一些特殊效果也可能依赖额外的选择范围定义(参见 Selection 相关命令列表)。因此,在实际开发过程中应当充分考虑到上下文环境的影响因素[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值