Skip to content

Stickers #66

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions