#include "../yScripts/y_JSExtensions.jsx"; function YStopMotionLayer() { this.info = { name : "YStopMotionLayer", version : 0.11, stage : "development", description : "Tool to create a sprite-like behaviour with a composition.", url : "yorchnet.com" }; this.appearence = { buttonHeight : 30, buttonWidth : 126 }; this.resources = { icon : new File('yNet.png'), e_0000 : "There are no comps in project.", e_0001 : "No Comps selected." }; this.init = function init() { this.btnLauyout = "button\ {\ preferredSize: ['" + this.appearence.buttonWidth + "','" + this.appearence.buttonHeight + "'],\ text:'" + this.info.name + "',\ helpTip:'" + this.info.description + "'\ }"; this. res = "window\ {\ type:'palette',\ text:'" + this.info.name + ' ' + this.info.ver + ' ' + this.info.stage + "',\ info: Group \ {\ alignment:['center','bottom'],\ icon: Image \ {\ icon:'" + this.resources.icon.path + '/' + this.resources.icon.name + "',\ preferredSize: [15, 18]\ },\ website: StaticText\ {\ text:'" + this.info.url + "',\ alignment:['fill','center']\ },\ }\ }"; } this.createUI = function createUI() { res = "window {\ resizeable : true\ closeButton : true\ text:'wtf'\ }" this.window = new Window( res ); this.window.layout.layout(true); this.window.center(); this.window.show(); } /** MEAT **/ this.yApplyStopMotionLayer = function yApplyStopMotionLayer(){ myName = "yStopMotionLayer"; myVer = "0.2a"; nComps = app.project.items.length; app.beginUndoGroup(myName); if(nComps>0){ sel = app.project.activeItem.selectedLayers; //array containing selection; if(sel.length == 1&&sel[0].source!= null){ myItem = sel[0].source; myItemType = myItem.typeName; if(myItemType!="Composition"){ alert(e_0001,myName+' '+myVer); }else{ sliderCtrl = sel[0]("Effects").addProperty("Slider Control"); sliderCtrl.name = "Animation State"; //should check for previously created sliders named the same and name uniquely accordingly. txtExpression = 'myLayer = thisLayer;myComp =comp(myLayer.name);\ max = myComp.numLayers;\ myValue = effect("'+sliderCtrl.name+'")("'+sliderCtrl("Slider").name+'");\ if(myValue<=max&&myValue>1){\ parseInt(myValue)\ }else if (myValue>max){\ max\ }else if(myValue<1){1}'; //'l = thisComp.layer('+'"'+app.project.activeItem.selectedLayers[0].name+'"'+');'+'fromWorld(l.toComp(l.transform.anchorPoint))'; sliderCtrl("Slider").expression = txtExpression; sliderCtrl("Slider").setValue(1); txtExpression = null; nLayers =myItem.numLayers; txtExpression = 'extValue = comp("'+sel[0].containingComp.name+'").layer("'+myItem.name+'").effect("'+sliderCtrl.name+'")("'+sliderCtrl("Slider").name+'");if(extValue == thisLayer.index){100}else{0}'; for (z=1;z<=nLayers;z++){ myItem.layer(z).opacity.expression=txtExpression; } txtExpression = null; } }else{ alert( this.resources.e_0001,myName+' '+myVer); } }else{ alert(this.resources.e_0000,myName+' '+myVer+" : Error"); } app.endUndoGroup(); } /**/ this.yMainFunction = function yMainFunction() { //this.createUI(); this.YStopMotionLayer(); } this.activate = function activate() { yStopMotionLayer.yApplyStopMotionLayer(); //this.yMainFunction(); } this.init(); return this; } //CHECKS that the toolbox exists, and if it doesn´t it runs the script on its own. if (typeof(YTB)=='undefined') { yStopMotionLayer = new YStopMotionLayer(); yStopMotionLayer.activate(); } else { yStopMotionLayer = YTB.addTool(new YStopMotionLayer()); }