100-thisComp.layer("name").transform.opacity
100-thisComp.layer(index-1).transform.opacity
口開き
口閉じ
目開き
目閉じ
(function () {
// ウィンドウ作成
var win = new Window("palette", "エクスプレッション適用", undefined, { resizeable: true });
win.orientation = "column";
// テキスト入力エリアの作成(サイズを確実に適用)
win.add("statictext", undefined, "エクスプレッションを入力:");
var expressionInput = win.add("edittext", undefined, "wiggle(2,10);", { multiline: true });
expressionInput.preferredSize = [350, 60];
var btnGroup = win.add("group");
btnGroup.orientation = "row";
// ボタンの作成
var btnPosition = btnGroup.add("button", undefined, "位置");
var btnRotation = btnGroup.add("button", undefined, "回転");
var btnScale = btnGroup.add("button", undefined, "スケール");
var btnOpacity = btnGroup.add("button", undefined, "透明度");
// ボタンのクリックイベント
btnPosition.onClick = function () { applyExpression("position"); };
btnRotation.onClick = function () { applyExpression("rotation"); };
btnScale.onClick = function () { applyExpression("scale"); };
btnOpacity.onClick = function () { applyExpression("opacity"); };
// **エクスプレッション適用関数**
function applyExpression(propName) {
try {
var comp = app.project.activeItem;
if (!comp || !(comp instanceof CompItem)) {
alert("コンポジションを開いてください。");
return;
}
var selectedLayers = comp.selectedLayers;
if (selectedLayers.length === 0) {
alert("レイヤーを選択してください。");
return;
}
var userExpression = expressionInput.text;
if (userExpression === "") {
alert("エクスプレッションを入力してください。");
return;
}
app.beginUndoGroup("エクスプレッション追加");
var appliedCount = 0;
for (var i = 0; i < selectedLayers.length; i++) {
var layer = selectedLayers[i];
var property = null;
if (propName === "position" && layer.property("Position")) {
property = layer.property("Position");
} else if (propName === "rotation") {
if (layer.threeDLayer) {
property = layer.property("Rotation") || layer.property("zRotation");
} else {
property = layer.property("Rotation");
}
} else if (propName === "scale" && layer.property("Scale")) {
property = layer.property("Scale");
} else if (propName === "opacity" && layer.property("Opacity")) {
property = layer.property("Opacity");
}
if (!property) {
alert("プロパティ取得に失敗しました!" + propName);
continue;
}
try {
property.expression = userExpression;
appliedCount++;
} catch (e) {
alert("エクスプレッション設定時にエラー発生: " + e.message);
}
}
app.endUndoGroup();
if (appliedCount === 0) {
alert("エクスプレッションが適用されませんでした。選択したレイヤーのプロパティを確認してください。");
} else {
alert("エクスプレッション適用完了!(適用数:" + appliedCount + ")");
}
} catch (err) {
alert("スクリプト実行中にエラー発生: " + err.message);
}
}
// ウィンドウを表示
win.center();
win.show();
})();