Vi är alla ganska bekanta med Adobe Illustrator och dess användargränssnitt. I våra dagliga kreativa uppgifter använder vi många funktioner, till exempel: menyer, paletter, färger, plug-ins och verktyg. Vi använder dessa funktioner i form av ett användargränssnitt. Dessa användargruppfunktioner skickas fram till oss genom olika skript och plugin-program.
På ett enklare sätt kan vi koda skript för att automatisera uppgifter eller få lite effekt i Illustrator. Följ med för att lära dig hur du gör det. I den här handledningen kommer vi att koda i Javascript ett skript som konverterar ett flatt processfyllt objekt till dess matchande gradient.
Vill du ha tillgång till hela Vector Source-filerna och nedladdningsbara kopior av varje handledning, inklusive den här? Bli med Plus Plus för bara 9 $ per månad.
Vi vill att detta skript ska utföra en mycket enkel uppgift. I Adobe Illustrator, när en användare väljer vissa objekt fyllda med en platt CMYK-färg, och exekverar detta Script; objekten ska omvandlas till en matchande CMYK Gradient-fyllning. Utgångsgradienten kommer att likna något som en gradientöverlagseffekt ses i multipliceringsläge. Detta visas i bilden nedan.
Därför syftar vårt skript till att konvertera ett platt CMYK-fyllt objekt till en mörk till ljus anpassningsgradient. Det här är en enkel åtgärd som är en bra övning för att lära sig att skript för Illustrator.
Logiken för att konvertera en platt färg till en mörk till ljusgradient kan förstås i fem enkla steg:
Var, gShift är mängden gradientskift som kommer att anges av användaren. Ovanstående algoritm kan lätt förstås från den i figuren visade bildrepresentationen.
Bortsett från kärnlogiken ska vi genomföra några valideringar och kontroller för att detta skript fungerar korrekt. Dessa valideringar kommer att omfattas av olika steg i denna handledning. Innan vi går fram till själva handledningen, låt oss bli bekanta med några förutsättningar.
Denna handledning kräver viss grundläggande kunskaper om skript och dess miljö. För att bli bekant med Illustrators Scripting Environment kan du snabbt titta på dokumentationen som finns i Illustrators installationsmapp, gå till installation_Directory \ Adobe \ Adobe Illustrator CS3 \ Scripting \ Documentation. Här hittar du följande dokument för att komma igång med JavaScript:
Det finns tre typer av skript som vi kan skriva för Illustrator. Dessa är: AppleScript, JavaScript och VBScript. Eftersom JavaScript stöds både på Windows och Mac OS, kodar vi vår logik i JavaScript. Syntaxen och notationerna är mycket lik standard JavaScript. Den enda skillnaden handlar om förlängningen. För Illustrator kommer vi att ange alla JavaScript-filer med en förlängning .JSX istället för det vanliga .js förlängning.
Även om du kan koda hela JavaScript i någon av dina favorit textredigerare, Det är lämpligt att använda Adobe ExtendedScript Toolkit. Genom att använda den här applikationen kan vi köra, felsöka, testa och kontrollera vår kod synkront med Illustrator.
Obs! Under hela handledningen kommer vi att beteckna ExtendedScript Toolkit med en kort form - ESTK.
Öppna Adobe ExtendedScript Toolkit och skapa en ny JavaScript-fil. Välj sedan Adobe Illustrator i rullgardinsmenyn för målprogram. Detta berättar ESTK att vi skriver JavaScript för en viss applikation, dvs Adobe Illustrator.
I kodredigeringsområdet lägger du in följande rader av kod:
om (app.documents.length> 0) alert ("Dokument finns tillgängliga"); annars varning ("Inga dokument tillgängliga");
I ovanstående kod kontrollerar vi om det finns några dokument som för närvarande öppnas i Illustrator. Detta görs via
app.documents.length
. dvs Toppnivåobjektet i alla Adobe Application DOM är applikationsobjektet. Nästa är dokumentobjektet, vilket ytterligare håller föremål som färger, lager, text, sidor etc. Spara den här filen på hårddisken som "test.jsx."
Det finns två sätt att utföra Script:
Om du vill köra ditt skript via ESTK, tryck på Play-knappen som visas nedan.
Detta startar automatiskt Adobe Illustrator-programmet och genererar varningsmeddelandet. Du kan stoppa eller stoppa körningen genom att trycka på paus eller stoppknappar.
För att utföra detta skript från Illustrator, gå till Arkiv> Skript> Annat skript (Command + F12) och leta reda på din nyskapade fil "test.jsx." När du klickar på Öppna, kommer skriptet att köras.
Så vad såg du? Ett varningsmeddelande, "Inga dokument tillgängliga."
Skapa sedan ett par nya dokument i Illustrator och kör det här skriptet igen. Den här gången kommer du att se en varning, "Dokument är tillgängliga."
Fram till den här tiden har vi skrivit och testat ett litet stycke kod. Detta gjordes som en uppvärmningsövning för att bekanta sig med ESTK och Illustrator. I våra nästa steg kommer vi att arbeta på själva skriptet.
Återgå till ESTK och ta bort testkoden som vi skapade i steg 2. Lägg sedan till följande rader av kod i "test.jsx:"
/ * För att se till att det finns minst ett dokument tillgängligt i Illustrator och minst ett objekt i det dokumentet för att fungera på * / if (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) // Till Se till att dokumentfärgsläget är CMYK om (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad (); // Call to actual funktion som kommer att innehålla all logik else alert ("Document Color Space är inte CMYK. Ändra dokumentfärgsläge till CMYK-läge", "CMYK-dokument krävs"); else alert ("Antingen finns inget dokument tillgängligt eller dokumentet är tomt"); funktion convertTograd () // Logic för att konvertera platt färg till gradient
I ovanstående kodstruktur skapar vi helt enkelt en nödvändig kontroll för vår huvudsakliga logiska funktion - converToGrad (). dvs huvudlogiken ska endast utföras om följande villkor är uppfyllda:
app.documents.length
returnerar det totala antalet dokument som öppnats i Illustrator.
En activeDocument
objekt avser det aktuella (aktiva) dokumentet där du arbetar.
pathItems
avser en samling av alla PATHITEM
objekt i ett Illustrator-dokument. Alla grafiska objekt som rektangel, ellips, polygon, linje, anpassade former etc betecknas som PATHITEM
; och en samling av alla dessa PATHITEM
betecknas som pathItems
. Därav, app.activeDocument.pathItems.length
kommer att returnera antalet grafiska enheter som finns i det aktuella dokumentet.
De documentColorSpace
objekt definierar färgläge för dokumentet. Vi gör denna validering eftersom all logiken i det här skriptet kommer att baseras på CMYK-färgutrymme.
Den grundläggande kodstrukturen är helt klar och klar. Därefter kommer vi att gå in convertToGrad ()
fungera.
Det första och främsta kravet på vår huvudlogik är att hämta det totala antalet utvalda objekt. Om inga objekt väljs ska skriptet meddela dig att du vill välja minst ett objekt. Lägg till följande rader med kod till convertToGrad ()
fungera:
funktion convertToGrad () var items = selection; var totaltVäljat = items.length; om (totaltVäljat> 0) // fortsätt med huvudlogiken annars alert ("Vänligen välj minst ett objekt"); // end convertToGrad
var items = selection
skapar en ny variabel objekt
och tilldelar hela valet till det. I nästa rad, items.length
returnerar det totala antalet valda objekt som tilldelas totalSelected
.
För att konvertera en platt färg till en gradient uppmanar vi användaren att ange några värden för Gradient Shift och Gradient Angle. Men före det, låt oss granska vad de är.
Gradient Shift: Detta är ett numeriskt värde som bestämmer hur mycket färg som ska läggas till eller tas bort från den ursprungliga färgen. Detta är kärnan i vår logik när vi omvandlar en platt färg till en gradient.
Hur fungerar en Gradient Shift? För att förstå hur det fungerar, överväga ett enkelt exempel på ett objekt fyllt med CMYK-värden: C = 50, M = 20, Y = 100 respektive K = 30.
Därefter ber vi användaren att ange ett värde för Gradient Shift. Låt oss ange detta värde med gShift
, och användaren har angivit 10 för gShift
.
När vi har fått gShift
värde kommer vi att skapa två gradientstopp för vårt objekt. Det första stoppet, dvs den lättare kommer att ha alla CMYK-värden minskat med gShift
. Medan det sista stoppet, dvs den mörkare, kommer alla CMYK-värden att öka med gShift
.
På detta sätt kommer en mörk till lätt gradient att genereras från den faktiska fyllfärgen. Vi kommer också att utföra några valideringar för att begränsa CMYK-värdena inom 0 och 100, eftersom vi lägger till eller subtraherar a gShift
värdet kan flytta CMYK-värdena bortom 0 eller 100.
Gradient Angle: Även om det inte är en del av kärnlogiken använder vi den här funktionen för att ge viss tillgänglighet och frihet att välja en anpassad vinkel för den resulterande gradienten. Användningen av lutningsvinkel ses i senare skede av denna handledning.
Låt oss återvända till koden och hämta användardata.
För att hämta användardata, ange följande rader med kod i om (totaltValda> 0)
blockera:
om (totalVäljad> 0) var gShift = Math.round (prompt ("Ange ett värde för gradientskift", "10", "Gradient Shift")); om (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = prompt ("Vector vinkel för gradient", "0.0", "Gradient Angle") om (gradAngle == null) gradAngle = 0; // endif
I ovanstående rader av kod uppmanar vi en användare att ange något värde för gradientskift och gradientvinkel. De Math.round ()
funktionen runda in det angivna värdet till ett heltal. (Obs! Du kan hoppa över Math.round ()
om du vill ha decimalvärden accepterade.) Standardvärdena för gShift
och gradAngle
är inställda på "10" respektive "0.0".
Observera att vi också validerar de inmatade värdena för null och noll. Null stöter på när en användare klickar på knappen Avbryt. Vi begränsar också gShift
värde inom 0 och 100.
När vi har gShift
och gradAngle
värden kan vi fortsätta för resten av koden.
Strax efter gradAngle
deklaration, ange följande rader av kod:
för (var j = 0; j < totalSelected; j++) var currentObject = app.activeDocument.selection[j]; if(currentObject.typename != "CompoundPathItem" && currentObject.typename != "GroupItem") if(currentObject.filled==true && currentObject.fillColor.typename != "GradientColor" && currentObject.fillColor.typename != "PatternColor" && currentObject.fillColor.typename != "SpotColor" &&) currentObject.fillColor.typename != "GrayColor" //perform color conversion here else alert("Fill an object with CMYK color. Any objects containing\ngradients, patterns, spot colors or empty fills will be omitted."," Only CMYK Colors Allowed"); else alert("This script only works with Non-Compound Objects or Isolated Group items.\nAny items with Groups or Compound Objects will be omitted.", "Ungroup or Isolate the Group Items"); //endfor
app.activeDocument.selection [j]
returnerar det valda objektet en-för-en för varje iteration av j
.
För varje valt objekt gör vi några valideringar och kontroller. Dessa kontroller är avgörande i detta skede. Den första kontrollen är att avgöra om objektet är ett sammansatt objekt eller en gruppobjekt. Eftersom det här skriptet inte fungerar direkt på grupper eller sammansatta objekt är denna kontroll obligatorisk.
På nästa nivå kontrollerar vi om det valda objektet redan är en lutning, mönster eller punktfärg. Om så är fallet kommer dessa objekt att hoppas över.
Det finns ytterligare en check för grayColor-specifikationen. GrayColor är något annorlunda än CMYK-färgspecifikation.
En detaljerad teknik är inblandad för att behandla objekt med grayColor-specifikation, som jag inte tar med i detta skede av handledningen. Denna teknik ingår emellertid i källfilerna för ditt intresse.
Enligt vår logik och algoritm kommer vi att välja färgen för varje valt objekt och dela dess CMYK-värden i fyra olika variabler, som visas nedan:
var currentColor = currentObject.fillColor; var currentCyan = Math.round (currentColor.cyan); var currentMagenta = Math.round (currentColor.magenta); var currentYellow = Math.round (currentColor.yellow); var currentBlack = Math.round (currentColor.black);
Obs! Alla dessa kodkoder ska komma in i "Utför färgomvandling" -block, som visas i steg 7.
pathItem.fillColor
returnerar fyllningsfärgen på ett visst banobjekt. I vårt fall är pathItem currentObject
. Vi använder color.cyan
, color.magenta
, color.yellow
och svart färg
egenskaper för att hämta C, M, Y och K-värdena i fyra olika variabler. När vi ställer in dessa värden kan vi enkelt kompensera dem med gShift
.
Vår resulterande gradient kommer att ha två gradientstopp. Låt oss beteckna dem med Startcolor
och EndColor
. Den variabla deklarationen för dessa två rampstoppfärger kommer att vara som visas nedan:
var startColor = ny CMYKColor (); var endColor = ny CMYKColor ();
De CMYKColor
är en CMYK-färgspecifikation som används för färgobjekt. Här, den Startcolor
och EndColor
förklaras som nya CMYK-färger.
I det här skedet har vi alla nödvändiga resurser för att skapa en ny gradient. Vi har currentColor
(med separata CMYK-värden), Startcolor
, EndColor
och gShift
. Vi kan nu ange de slutliga färgvärdena för Startcolor
och EndColor
använder offset teknik.
De Startcolor
kommer att vara den lättare delen av gradienten. Därför kommer vi att subtrahera gShift
från C, M, Y och K värden av currentColor
, resulterar i Startcolor
.
startColor.cyan = currentCyan - gShift; startColor.magenta = currentMagenta - gShift; startColor.yellow = currentYellow - gShift; startColor.black = currentBlack - gShift;
Det här är enkelt, men vi behöver göra några kontroller. Vad händer exempelvis om currentCyan
är redan mindre än gShift
? Säga, currentCyan
är 10 och gShift
är 20. Det resulterande cyanvärdet för Startcolor
blir 10-20 = (-) 10. För att komma till rätta med denna fråga kommer vi att ändra ovanstående uppsättning kod i följande rader av kod:
if (currentCyan < gShift) startColor.cyan= 0; else startColor.cyan= currentCyan - gShift; if(currentMagenta < gShift) startColor.magenta= 0; else startColor.magenta = currentMagenta - gShift; if(currentYellow < gShift) startColor.yellow= 0; else startColor.yellow= currentYellow - gShift; if(currentBlack < gShift) startColor.black= 0; else startColor.black = currentBlack - gShift;
De EndColor
kommer att vara den mörkare delen av gradienten. Därför lägger vi till gShift
till C, M, Y och K-värden eller currentColor
respektive. Efter enkel tillägg ska koden se ut som följer:
endColor.cyan = currentCyan + gShift; endColor.magenta = currentMagenta + gShift; endColor.yellow = currentYellow + gShift; endColor.black = currentBlack + gShift;
Återigen ser allting okej ut. Men det finns en komplikation: Vad kommer att hända om tillägget av gShift
resulterar i ett värde större än 100? Till exempel, currentCyan
är 95 och gShift
är 20. Att lägga till dessa två kommer att resultera som endColor.cyan = 115
; vilket inte är acceptabelt. Så vi kommer att kompensera detta med några valideringar.
Låt oss skapa en ny variabel gShiftEnd
, vilket är lika med 100-gShift
. Därefter kommer vi att kontrollera om det aktuella C-, M-, Y- eller K-värdet är större än gShiftEnd
. Om så är fallet kommer vi att ställa in endColors C, M, Y eller K-värde till 100; annars kommer vi att ange endColors C, M, Y eller K-värde genom att lägga till gShift
till den aktuella C, M, Y eller K. Detta kan utarbetas från det exempel vi såg ovan.
Vi har nuvarandeCyan = 95 och gShift = 20. Därför gShiftEnd = 100 - 20. dvs 80. Nästa, nuvarandeCyan är större än gShiftEnd; så vi kommer att ange endColor.cyan till 100.
Efter denna princip kommer vår kod att ändras till följande:
gShiftEnd = 100-gShift; om (currentCyan> gShiftEnd) endColor.cyan = 100; annars endColor.cyan = currentCyan + gShift; om (currentMagenta> gShiftEnd) endColor.magenta = 100; annars endColor.magenta = currentMagenta + gShift; om (currentYellow> gShiftEnd) endColor.yellow = 100; annars endColor.yellow = currentYellow + gShift; om (currentBlack> gShiftEnd) endColor.black = 100; annars endColor.black = currentBlack + gShift;
Så fram till den här tiden kommer hela koden att se ut så här:
om (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) om (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad (); else alert ("Document Color Space är inte CMYK. Ändra dokumentfärgsläge till CMYK-läge", "CMYK-dokument krävs"); // avsluta huvud om annars alert ("Ingendera dokumentet är tillgängligt eller dokumentet är tomt"); funktionen convertToGrad () var items = selection; var totaltVäljat = items.length; om (totalVäljad> 0) var gShift = Math.round (prompt ("Ange ett värde för gradientskift", "10", "Gradient Shift")); om (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = prompt ("Vector vinkel för gradient", "0.0", "Gradient Angle") om (gradAngle == null) gradAngle = 0; för (var j = 0; j < totalSelected; j++) var currentObject = app.activeDocument.selection[j]; if(currentObject.typename != "CompoundPathItem" && currentObject.typename != "GroupItem") if(currentObject.filled==true && currentObject.fillColor.typename != "GradientColor" && currentObject.fillColor.typename != "PatternColor" && currentObject.fillColor.typename != "SpotColor" && currentObject.fillColor.typename != "GrayColor" ) var currentColor = currentObject.fillColor; var currentCyan = Math.round(currentColor.cyan); var currentMagenta = Math.round(currentColor.magenta); var currentYellow = Math.round(currentColor.yellow); var currentBlack = Math.round(currentColor.black); // Create a color for both ends of the gradient var startColor = new CMYKColor(); var endColor = new CMYKColor(); if(currentCyan < gShift) startColor.cyan = 0; else startColor.cyan = currentCyan - gShift; if(currentMagenta < gShift) startColor.magenta = 0; else startColor.magenta = currentMagenta - gShift; if(currentYellow < gShift) startColor.yellow = 0; else startColor.yellow = currentYellow - gShift; if(currentBlack < gShift) startColor.black= 0; else startColor.black = currentBlack - gShift; gShiftEnd = 100 - gShift; if(currentCyan > gShiftEnd) endColor.cyan = 100; annars endColor.cyan = currentCyan + gShift; om (currentMagenta> gShiftEnd) endColor.magenta = 100; annars endColor.magenta = currentMagenta + gShift; om (currentYellow> gShiftEnd) endColor.yellow = 100; annars endColor.yellow = currentYellow + gShift; om (currentBlack> gShiftEnd) endColor.black = 100; annars endColor.black = currentBlack + gShift; // Gradient Declaration Block // Endif Other alert ("Fyll ett objekt med CMYK-färg. Alla objekt som innehåller \ ngradients, mönster, spotfärger eller tomma fyllningar kommer att utelämnas.", "Endast CMYK Colors Allowed"); else alert ("Detta skript fungerar bara med icke-sammansatta objekt eller isolerade gruppobjekt. \ nAlla objekt med grupper eller sammansatta objekt kommer att utelämnas.", "Ugruppera eller isolera gruppobjekten"); // endfor // end vald annan alert ("Vänligen välj minst ett objekt");
Nu när vi har satt Startcolor
och EndColor
; vi kan fortsätta med skapandet av den nya lutningen.
För att lägga till en ny gradient, sätt in följande rad kod i "// Gradient Declaration Block".
var newGradient = app.activeDocument.gradients.add (); newGradient.type = GradientType.LINEAR;
Detta lägger till en ny linjär typ Gradient i det aktuella aktiva dokumentet.
Lägg till följande rader av kod strax efter gradientdeklarationen:
// Ändra det första gradientstoppet newGradient.gradientStops [0] .rampPoint = 0; newGradient.gradientStops [0] .midPoint = 50; newGradient.gradientStops [0] .color = startColor; // Ändra det senaste lutningsstoppet newGradient.gradientStops [1] .rampPoint = 100; newGradient.gradientStops [1] .color = endColor;
gradientStop [0]
är det första lutningsstoppet, medan, gradientStop [1]
är det sista lutningsstoppet. Om du vill ha mer gradientstopp kan du beteckna dem som gradientStop [2], gradientStop [3]
och så vidare.
rampPoint
används för att ställa in rampunktspositionen för den associerade gradientStop. Vi har satt den första och sista ramppunkten som 0 respektive 100. mittpunkten
används för att ställa in mittpunktens läge mellan två lutningsstopp. Vi har satt detta till 50. Slutligen har vi tilldelat värdena på Startcolor
och EndColor
till respektive första och sista gradientStops.
Vi är nästan färdiga med färgomvandling och gradientbildning. Därefter måste vi tillämpa den här nyinställda lutningen till det aktuella valda objektet. För att göra det kommer vi att skapa ett Gradient Color Object som hänvisar till den nyskapade gradienten.
Obs: Vi kan inte tillämpa den nyskapade gradienten direkt som en fyllning Färg till objektet. För att kunna använda denna gradient måste vi skapa ett nytt Gradient Color-objekt, som visas nedan:
// konstruera ett Illustrator.GradientColor-objekt som hänvisar till // nyskapade gradienten var colorOfGradient = new GradientColor (); colorOfGradient.gradient = newGradient;
Slutligen fyller vi currentObject
med colorOfGradient
, enligt nedanstående:
// Hämta nuvarande sökvägsartikel, använd ny gradient som fyller currentObject.fillColor = colorOfGradient; currentObject.rotate (gradAngle, false, false, true, false, Transformation.CENTER);
Vi har applicerat en rotationsmatris till det aktuella objektet. Denna rotationsmatris utnyttjar lutningsvinkeln för att transformera lutningen. Rotationssyntaxen är:
rotera
(vinkel
[, ChangePositions]
[, ChangeFillPatterns]
[, ChangeFillGradients]
[, ChangeStrokePattern]
[, RotateAbout])
Här har vi satt changeFillgradients
till "sant" och resten till "falskt". Detta är ett knepigt sätt att rotera gradientfärgen i en viss vinkel. Tack till John Wundes för att föreslå mig denna intelligenta teknik.
Slutskriptet efter fullständig kodning visas nedan:
om (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) om (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad (); else alert ("Document Color Space är inte CMYK. Ändra dokumentfärgsläge till CMYK-läge", "CMYK-dokument krävs"); // avsluta huvud om annars alert ("Ingendera dokumentet är tillgängligt eller dokumentet är tomt"); funktionen convertToGrad () var items = selection; var totaltVäljat = items.length; om (totalVäljad> 0) var gShift = Math.round (prompt ("Ange ett värde för gradientskift", "10", "Gradient Shift")); om (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = prompt ("Vector vinkel för gradient", "0.0", "Gradient Angle") om (gradAngle == null) gradAngle = 0; för (var j = 0; j < totalSelected; j++) var currentObject = app.activeDocument.selection[j]; if(currentObject.typename != "CompoundPathItem" && currentObject.typename != "GroupItem") if(currentObject.filled==true && currentObject.fillColor.typename != "GradientColor" && currentObject.fillColor.typename != "PatternColor" && currentObject.fillColor.typename != "SpotColor" && currentObject.fillColor.typename != "GrayColor" ) var currentColor = currentObject.fillColor; var currentCyan = Math.round(currentColor.cyan); var currentMagenta = Math.round(currentColor.magenta); var currentYellow = Math.round(currentColor.yellow); var currentBlack = Math.round(currentColor.black); // Create a color for both ends of the gradient var startColor = new CMYKColor(); var endColor = new CMYKColor(); if(currentCyan < gShift) startColor.cyan= 0; else startColor.cyan = currentCyan - gShift; if(currentMagenta < gShift) startColor.magenta = 0; else startColor.magenta = currentMagenta - gShift; if(currentYellow < gShift) startColor.yellow = 0; else startColor.yellow = currentYellow - gShift; if(currentBlack < gShift) startColor.black = 0; else startColor.black = currentBlack - gShift; gShiftEnd = 100 - gShift; if(currentCyan > gShiftEnd) endColor.cyan = 100; annars endColor.cyan = currentCyan + gShift; om (currentMagenta> gShiftEnd) endColor.magenta = 100; annars endColor.magenta = currentMagenta + gShift; om (currentYellow> gShiftEnd) endColor.yellow = 100; annars endColor.yellow = currentYellow + gShift; om (currentBlack> gShiftEnd) endColor.black = 100; annars endColor.black = currentBlack + gShift; // Skapa en ny gradient // En ny gradient har alltid 2 stopp var newGradient = app.activeDocument.gradients.add (); newGradient.type = GradientType.LINEAR; // Ändra det första gradientstoppet newGradient.gradientStops [0] .rampPoint = 0; newGradient.gradientStops [0] .midPoint = 50; newGradient.gradientStops [0] .color = startColor; // Ändra det senaste lutningsstoppet newGradient.gradientStops [1] .rampPoint = 100; newGradient.gradientStops [1] .color = endColor; // konstruera ett Illustrator.GradientColor-objekt som hänvisar till // nyskapade gradienten var colorOfGradient = new GradientColor (); colorOfGradient.gradient = newGradient; // Hämta nuvarande sökvägsartikel, använd ny gradient som fyller currentObject.fillColor = colorOfGradient; currentObject.rotate (gradAngle, false, false, true, false, Transformation.CENTER); // endif else alert ("Fyll ett objekt med CMYK-färg. Alla objekt som innehåller \ ngradients, mönster, spotfärger eller tomma fyllningar kommer att utelämnas.", "Endast CMYK Colors Allowed"); else alert ("Detta skript fungerar bara med icke-sammansatta objekt eller isolerade gruppobjekt. \ nAlla objekt med grupper eller sammansatta objekt kommer att utelämnas.", "Ugruppera eller isolera gruppobjekten"); // endfor // end vald annan alert ("Vänligen välj minst ett objekt");
Spara skriptet och skapa ett nytt dokument i Adobe Illustrator. Skapa sedan några objekt med platta CMYK-färger. Välj några av dessa objekt och kör skriptet genom att följa metoderna som beskrivs i steg 2.1.
Du kommer att uppmanas att ange Gradient Shift. Ange något värde för gShift
.
Därefter kommer du att bli uppmanad till lutningsvinkel. Ange ett värde för gradAngle.
Slutligen ser du produktionen som visas nedan.
Vi har lärt oss hur man skriver skript för att automatisera eller generera en effekt. Exemplet som visas i denna handledning var en enkel demonstration av vad vi kan utföra genom skript. Med det här exemplet har vi lärt oss hur CMYK-färger representeras i skript, hur de fungerar och hur föremål beter sig i DOM i Adobe Illustrator. I vår nästa del kommer vi att täcka en Script som smälter den tillgängliga gradientfärgen till en platt CMYK-färg. Hoppas att du åtnjuter denna inledande handledning till skript.
Prenumerera på Vectortuts + RSS-flödet för att hålla dig uppdaterad med de senaste vektorhandledningarna och artiklarna.