Skip to content

Stickers #66

@Di3x2194

Description

@Di3x2194

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:

// ==========================================
// 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();

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions