当前位置: 首页 > article >正文

PhotoShop中创建窗口使用对应按钮创建对应图层简单示例

以前在使用Photoshop的PSD文件转换成Unity的UI Prefab工具的时候,想过是否能在PhotoShop中创建“组件”方式创建层,然后通过代码给层做重命名,不需要手动改写层的名字,可以直接创建所需数量的图层并按照层级排列,具体思路如下:

本文是尝试实现的记录:

首先生成一个对话框,并生成按钮,点击按钮会生成图层:

代码:

// 创建一个新的对话框
var dialog = new Window('dialog', '自定义生成器');

// 创建Button按钮
var buttonButton = dialog.add('button', undefined, 'Button图层');
buttonButton.onClick = function () {
    createButtonLayer();
};

// 创建Text按钮
var textButton = dialog.add('button', undefined, 'Text图层');
textButton.onClick = function () {
    createTextLayer();
};

// 创建Image按钮
var imageButton = dialog.add('button', undefined, 'Image图层');
imageButton.onClick = function () {
    createImageLayer();
};

// 创建列表按钮(这里假设是一个简单的按钮,点击后创建一个名为List的图层)
var listButton = dialog.add('button', undefined, 'List图层');
listButton.onClick = function () {
    createListLayer();
};

// 创建Button图层的函数
function createButtonLayer() {
    var doc = app.activeDocument;
    var newLayer = doc.artLayers.add();
    newLayer.name = 'Button图层';

    // 设置Button图层的填充颜色为灰色
    var fillColor = new SolidColor();
    fillColor.rgb.red = 128;
    fillColor.rgb.green = 128;
    fillColor.rgb.blue = 128;
    newLayer.fillColor = fillColor;
}

// 创建Text图层的函数
function createTextLayer() {
    var doc = app.activeDocument;
    var textLayer = doc.artLayers.add();
    textLayer.name = 'Text图层';

    // 将图层转换为文本图层
    var textItem = textLayer.textItem;
    textItem.contents = '默认文本内容';
    textItem.size = 12;
    textItem.color = new SolidColor();
    textItem.color.rgb.red = 0;
    textItem.color.rgb.green = 0;
    textItem.color.rgb.blue = 0;
}

// 创建Image图层的函数
function createImageLayer() {
    var doc = app.activeDocument;
    var newLayer = doc.artLayers.add();
    newLayer.name = 'Image图层';

    // 这里假设你有一个名为image.jpg的图片资源在脚本同目录下
    var imageFile = new File(File.desktop + '/image.jpg');
    if (imageFile.exists) {
        var placedLayer = doc.importFile(imageFile, new LayerPosition(AnchorPosition.MIDDLECENTER));
        placedLayer.name = 'Image图层';
    } else {
        alert('指定的图片文件不存在。');
    }
}

// 创建List图层的函数
function createListLayer() {
    var doc = app.activeDocument;
    var newLayer = doc.artLayers.add();
    newLayer.name = 'List图层';

    // 设置List图层的填充颜色为浅蓝色
    var fillColor = new SolidColor();
    fillColor.rgb.red = 173;
    fillColor.rgb.green = 216;
    fillColor.rgb.blue = 230;
    newLayer.fillColor = fillColor;
}

// 显示对话框
dialog.show();

结果:

未完待续。。。


http://www.kler.cn/a/543817.html

相关文章:

  • 【工业场景】用YOLOv8实现火灾识别
  • 【Stable Diffusion模型测试】测试ControlNet,没有线稿图?
  • MATLAB 生成脉冲序列 pulstran函数使用详解
  • 题解 洛谷 Luogu P1828 [USACO3.2] 香甜的黄油 Sweet Butter 最短路 堆优化Dijkstra Floyd C++
  • 【编程实践】vscode+pyside6环境部署
  • HTML之JavaScript对象声明
  • 业务开发 | 基础知识 | Maven 快速入门
  • 利用爬虫高效获取1688商品详情:案例指南
  • 【PHP的static】
  • 1.【BUUCTF】[极客大挑战 2019]PHP(反序列化)
  • 国际主流架构框架整理【表格版】简介、适用场景、优缺点、中文名、英名全称,附TOGAF认证介绍
  • 稀土抑烟剂——为汽车火灾安全增添防线
  • 基于ssm的超市订单管理系统
  • 【学习笔记】vue-cli中组件间传参的方式
  • CentOS本机配置为时间源
  • 尚硅谷爬虫note001
  • centos7 curl#6 - Could not resolve host mirrorlist.centos.org; 未知的错误 解决方案
  • Unity中快速制作2D沙雕动画:流程编
  • jQuery介绍(快速、简洁JavaScript库,诞生于2006年,主要目标是简化HTML文档操作、事件处理、动画和Ajax交互)
  • PyQt学习记录03——批量设置水印
  • patch-package的实现基本原理
  • 云服务是否能满足特定行业(如金融、医疗)的合规要求
  • 基础算法--二分查找
  • Zabbix7.0服务器在告警发生时自动调用客户机脚本
  • 从零开始学Python爬虫:(二)使用基本库urllib(上)
  • Vue的scoped原理是什么