// ==========================================
// SCRIPT: Creador de Stickers Interactivo
// ==========================================
function generarStickerInteractivo() {
let doc = Affinity.ActiveDocument;
let seleccion = doc.selection;
// Validación: Verificar si hay algo seleccionado
if (!seleccion || seleccion.length === 0) {
Affinity.UI.alert("Error: Por favor, selecciona la ilustración o grupo primero.");
return;
}
// 1. Solicitar el grosor del borde al usuario
let grosorInput = Affinity.UI.prompt("Grosor del Sticker", "Introduce el grosor del borde blanco (en píxeles):", "15");
if (grosorInput === null) return; // Si el usuario cancela
let grosor = parseInt(grosorInput, 10);
// Validar que sea un número válido
if (isNaN(grosor) || grosor <= 0) {
Affinity.UI.alert("Por favor, introduce un número entero mayor a 0.");
return;
}
// 2. Solicitar si desea sombra base (Socio: Sí = 1, No = 0)
let conSombra = Affinity.UI.confirm("¿Añadir efecto de sombra?", "¿Quieres que el sticker tenga una sombra sutil para dar volumen?");
// 3. Procesar la selección
seleccion.forEach(capa => {
// Aplicar el contorno/borde (Outline FX)
capa.fx.outline = {
enabled: true,
color: new Color(1, 1, 1, 1), // Blanco Puro (RGBA)
radius: grosor, // Usamos la variable elegida por ti
alignment: "Outer", // Forzar a que sea exterior
blendMode: "Normal",
opacity: 1.0
};
// Aplicar o apagar la sombra según la respuesta del usuario
if (conSombra) {
capa.fx.dropShadow = {
enabled: true,
color: new Color(0, 0, 0, 0.25), // Negro con 25% opacidad
radius: Math.round(grosor * 0.4), // Sombra proporcional al tamaño del sticker
offset: { x: 0, y: Math.round(grosor * 0.2) },
intensity: 0.1,
blendMode: "Multiply"
};
} else {
// Asegurar que esté apagada si ya tenía una antes
capa.fx.dropShadow = { enabled: false };
}
});
// Notificación de éxito
Affinity.UI.toast("¡Sticker generado con borde de " + grosor + "px!");
}
// Ejecutar la función principal
generarStickerInteractivo();
Script Name: Stickers
Author: DiegoUI31
Description: (What does this script do? How should it be used?)
Preview image: (drag and drop 16x9 preview image)
Version: 1.0.0
Code: