Перейти к содержимому



  • Вы не можете создать новую тему
  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1
OFFLINE   AEplug

AEplug

    Silver Clubber

  • Клаберы
  • PipPipPipPipPipPipPip
  • 1 162 сообщений

Есть скрипт rd_CopyMarkers.jsx
http://www.redefiner...=rd_CopyMarkers

Он копирует маркеры между слоями.

Какая команда будет для замены "создания маркера слоя" на "создание маркера композиции" с теми же параметрами?

 

кажется вот эти строчки

var comp = app.project.activeItem;
var layer = comp.selectedLayers[0];
var markers = layer.property("marker");
comp.selectedLayers[1].property("marker").setValueAtTime(markers.keyTime(i), markers.keyValue(i));

Может кто подскажет?

Например в Add Edit Markers.jsxbin

http://aescripts.com/add-edit-markers/

скрипт создает такие маркеры, но я не знаю как залезть внутрь jsxbin )


Сообщение отредактировал AEplug: 15 Декабрь 2014 - 05:17


#2
OFFLINE   Rey

Rey

    Regular Member

  • Пользователи
  • PipPipPip
  • 134 сообщений

Нет такой команды, маркера композиции не доступны из под скрипта.

Можно создать только маркер пустышку. Для этого надо убрать выделения со всех слоев и выполнить команду меню "Add Marker"



#3
OFFLINE   AEplug

AEplug

    Silver Clubber

    Топикстартер
  • Клаберы
  • PipPipPipPipPipPipPip
  • 1 162 сообщений

но скрипт то создает как то - Add Edit Markers

как же он это делает, если нельзя?



#4
OFFLINE   Rey

Rey

    Regular Member

  • Пользователи
  • PipPipPip
  • 134 сообщений

Я же написал как это сделать во втором и третьем предложении. C помощью "костыля" вызова команды меню.

 

app.executeCommand(app.findMenuCommandId("Add Marker"));



#5
OFFLINE   AEplug

AEplug

    Silver Clubber

    Топикстартер
  • Клаберы
  • PipPipPipPipPipPipPip
  • 1 162 сообщений

но если я снимаю выделение со слоев

тогда переменные selectedLayers[*] перестают работать

как же быть?



#6
OFFLINE   Rey

Rey

    Regular Member

  • Пользователи
  • PipPipPip
  • 134 сообщений

Скопировать в массив можно

или можно сначала создать массив маркеров (достаточно только времени),

а потом снять выделения со всех слоёв,

прыгать по времени из массива и

добавлять маркер в композицию.



#7
OFFLINE   monter

monter

    Человечище

  • Модераторы
  • 50 сообщений

Add Edit Markers.jsx

var aes_aem_data;


function CreateEditMarkers(thisObj) {
   var myPalette;


   function buildUI1(thisObj) {
      var res, myPal;
      if (thisObj instanceof Panel) {
         myPal = thisObj;
      }
      else {
         myPal = new Window("palette", aes_aem_data.scriptName + " v" + aes_aem_data.scriptVersion, undefined, {
            resizeable: false
         });
      }
      if (myPal != null) {
         res = "group { \
            alignment: ['left','top'], \
            alignChildren: ['left','top'], \
            orientation: 'column', \
            layerGrp: Group {\
            alignment: ['fill','fill'], \
            alignChildren: ['left','top'], \
            spacing: 0 \
            orientation: 'row', \
            addLayer: Checkbox {text:'Add layer markers', preferredSize: [125,30]}, \
            inOut: DropDownList {properties:{items:['in & out','in','out']}, preferredSize: [90,20]}, \
            }\
            compGrp: Group {\
            alignment: ['fill','fill'], \
            alignChildren: ['left','top'], \
            spacing: 0 \
            orientation: 'row', \
            addComp: Checkbox {text:'Add comp markers', preferredSize: [125,30]}, \
            inOut: DropDownList {properties:{items:['in & out','in','out']}, preferredSize: [90,20]}, \
            }\
            btnsGrp: Group {\
            alignment: ['fill','fill'], \
            alignChildren: ['fill','top'], \
            orientation: 'row', \
            help: Button {text: '?', alignment: ['left','top'],preferredSize: [30,30]} , \
            doIt: Button {text: 'Do It!', alignment: ['right','top']} , \
            }\
            }";
         myPal.grp = myPal.add(res);
         myPal.layout.layout(true);
         myPal.layout.resize();
         myPal.onResizing = myPal.onResize = function () {
            this.layout.resize();
         };
         myPal.grp.layerGrp.inOut.selection = myPal.grp.compGrp.inOut.selection = 0;
         if (app.settings.haveSetting("aescripts", "AddEditMarkers_LayerInOut")) myPal.grp.layerGrp.inOut.selection = app.settings.getSetting("aescripts", "AddEditMarkers_LayerInOut");
         if (app.settings.haveSetting("aescripts", "AddEditMarkers_CompInOut")) myPal.grp.compGrp.inOut.selection = app.settings.getSetting("aescripts", "AddEditMarkers_CompInOut");
         if (app.settings.haveSetting("aescripts", "AddEditMarkers_LayerMarker")) myPal.grp.layerGrp.addLayer.value = !(app.settings.getSetting("aescripts", "AddEditMarkers_LayerMarker") == "false");
         else myPal.grp.layerGrp.addLayer.value = false;
         if (app.settings.haveSetting("aescripts", "AddEditMarkers_CompMarker")) myPal.grp.compGrp.addComp.value = !(app.settings.getSetting("aescripts", "AddEditMarkers_CompMarker") == "false");
         else myPal.grp.compGrp.addComp.value = false;
         myPal.grp.btnsGrp.doIt.onClick = function () {
            saveSettings(myPal);
            doIt(myPal);
         };
         myPal.onClose = function () {
            saveSettings(myPal);
         };
         myPal.grp.btnsGrp.help.onClick = function () {
            alert(aes_aem_data.scriptName + " v" + aes_aem_data.scriptVersion + "\n\xa92013 Lloyd Alvarez http://aescripts.com\n\n" + "Will place markers at the in and out points of the selected layers or all layers in the comp if no layers are selected. The markers will be placed on the layers or the comp depending on the user preference");
         };
      }
      return myPal;
   }


   function saveSettings(thePal) {
      var layerInOut, compInOut, markLayer, markComp;
      markLayer = thePal.grp.layerGrp.addLayer.value;
      layerInOut = thePal.grp.layerGrp.inOut.selection.index;
      markComp = thePal.grp.compGrp.addComp.value;
      compInOut = thePal.grp.compGrp.inOut.selection.index;
      app.settings.saveSetting("aescripts", "AddEditMarkers_LayerMarker", markLayer);
      app.settings.saveSetting("aescripts", "AddEditMarkers_LayerInOut", layerInOut);
      app.settings.saveSetting("aescripts", "AddEditMarkers_CompMarker", markComp);
      app.settings.saveSetting("aescripts", "AddEditMarkers_CompInOut", compInOut);
   }


   function doIt(thePal) {
      var myLayer, i, layerInOut, compInOut, myComp, markLayer, markComp, isSelLayers, selLayers, counter, saveCompTime, myIn, myOut, myMarker, numLayers;
      markLayer = thePal.grp.layerGrp.addLayer.value;
      layerInOut = thePal.grp.layerGrp.inOut.selection;
      markComp = thePal.grp.compGrp.addComp.value;
      compInOut = thePal.grp.compGrp.inOut.selection;
      app.beginUndoGroup(aes_aem_data.scriptName);
      myComp = app.project.activeItem;
      if (!markLayer && !markComp) {
         alert("Please select at least one option");
         return;
      }
      if ((myComp == null) || !(myComp instanceof CompItem)) {
         alert("Please select a comp");
         return;
      }
      isSelLayers = myComp.selectedLayers.length > 0;
      numLayers = isSelLayers ? (myComp.selectedLayers.length - 1) : myComp.numLayers;
      i = isSelLayers ? 0 : 1;
      selLayers = new Array();
      counter = 0;
      for (i; i <= numLayers; i++) {
         selLayers[counter] = isSelLayers ? myComp.selectedLayers[i] : myComp.layer(i);
         counter++;
      }
      for (i = 0; i < selLayers.length; i = i + 1) {
         selLayers[i].selected = false;
      }
      saveCompTime = myComp.time;
      for (i = 0; i < selLayers.length; i = i + 1) {
         myLayer = selLayers[i];
         myIn = myLayer.inPoint;
         myOut = myLayer.outPoint;
         myMarker = new MarkerValue("");
         if (markLayer) {
            if (layerInOut < 2) myLayer.property("Marker").setValueAtTime(myIn, myMarker);
            if ((layerInOut == 0) || (layerInOut == 2)) myLayer.property("Marker").setValueAtTime(myOut, myMarker);
         }
         if (markComp) {
            if (compInOut < 2) {
               myComp.time = myIn;
               app.executeCommand(2157);
            }
            if ((compInOut == 0) || (compInOut == 2)) {
               myComp.time = myOut;
               app.executeCommand(2157);
            }
         }
      }
      if (isSelLayers) {
         for (i = 0; i < selLayers.length; i = i + 1) {
            selLayers[i].selected = true;
         }
      }
      myComp.time = saveCompTime;
      app.endUndoGroup;
   }
   myPalette = buildUI1(thisObj);
   if ((myPalette != null) && (myPalette instanceof Window)) {
      myPalette.show();
   }
}
aes_aem_data = {
   scriptName: "Add Edit Markers",
   scriptVersion: "1.0"
};
CreateEditMarkers(this);


#8
OFFLINE   AEplug

AEplug

    Silver Clubber

    Топикстартер
  • Клаберы
  • PipPipPipPipPipPipPip
  • 1 162 сообщений

я так понял это как раз исходник?



#9
OFFLINE   monter

monter

    Человечище

  • Модераторы
  • 50 сообщений

да, это исходник.



#10
OFFLINE   AEplug

AEplug

    Silver Clubber

    Топикстартер
  • Клаберы
  • PipPipPipPipPipPipPip
  • 1 162 сообщений

и это можно проделать с любым jsxbin?



#11
OFFLINE   AEplug

AEplug

    Silver Clubber

    Топикстартер
  • Клаберы
  • PipPipPipPipPipPipPip
  • 1 162 сообщений
var myComp = app.project.activeItem;
var myLayer = myComp.selectedLayers[0];
app.beginUndoGroup("Copy Markers");
saveCompTime = myComp.time;
var MarkersArr = [];
for (var i = 1; i <= myLayer.property("Marker").numKeys; i++)
	{
		MarkersArr[MarkersArr.length] = myLayer.property("Marker").keyTime(i);
	}
myLayer.selected = false;
for (var i = 0; i < myLayer.property("Marker").numKeys; i++)
	{
		myComp.time = MarkersArr[i];
		app.executeCommand(app.findMenuCommandId("Add Marker"));
	}
myComp.time = saveCompTime;
myLayer.selected = true;
app.endUndoGroup();





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных