Estoy tratando de modificar un script que encontré aquí para que muestre aleatoriamente 1 capa por grupo en algunos pero no en todos los grupos, con alguna condición. Tengo aproximadamente 1 hora en Javascript y no entiendo 1 cosa en el script que encontré antes de profundizar en la modificación. Operador para significa que ejecutará el código varias veces, en este caso una vez para cada grupo de capas. La función Save() se llama dentro de este operador "for".
Al mismo tiempo, la función Visible() ya se llama varias veces, una vez por cada patrón que solicitó en el mensaje inicial.
function Visible() { var Grps = app.activeDocument.layerSets; // loops through all groups for(var i = 0; i < Grps.length; i++){ var tmp = app.activeDocument.layerSets[i].layers.length; app.activeDocument.layerSets[i].visible=true; var groupChildArr = app.activeDocument.layerSets[i].layers; var randLays = Math.floor(Math.random() * tmp); groupChildArr[randLays].visible = true; Save(); } Revert(); } function Save() { var outFolder = app.activeDocument; // psd name var outPath = outFolder.path; var fName = "PNG"; // define folder name var f = new Folder(outPath + "/" + fName); if ( ! f.exists ) { f.create() } var saveFile = new File(outPath + "/" + fName +"/" + "Pattern_" + num + ".png"); pngSaveOptions = new PNGSaveOptions(); pngSaveOptions.interlaced = false; app.activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE); } function Revert(){ var idRvrt = charIDToTypeID( "Rvrt" ); executeAction( idRvrt, undefined, DialogModes.NO ); } var count = prompt("How many patterns you want",""); for (var x=0 ; x<count;x++){ var num = x+1; Visible(); }Desde mi comprensión básica, ¿significa que el archivo se guardará y sobrescribirá para cada nuevo grupo de capas encontrado y utilizado en la función Visible ()? Por lo tanto, si tengo 5 grupos de capas, se guardará 5 veces antes de que se complete la versión final de la imagen y, en su lugar, se debe mover fuera del operador "para", si lo entendí correctamente. ¿Sería mejor si en cambio se escribiera de esta manera?
function Visible() { var Grps = app.activeDocument.layerSets; // loops through all groups for(var i = 0; i < Grps.length; i++){ var tmp = app.activeDocument.layerSets[i].layers.length; app.activeDocument.layerSets[i].visible=true; var groupChildArr = app.activeDocument.layerSets[i].layers; var randLays = Math.floor(Math.random() * tmp); groupChildArr[randLays].visible = true; } Save(); Revert(); }