{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Секретный блог: заметки с тегом after effects",
    "_rss_description": "Скрытые от навигации заметки",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/balyberdin.com\/hey\/tags\/after-effects\/",
    "feed_url": "https:\/\/balyberdin.com\/hey\/tags\/after-effects\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Vitaly Balyberdin",
            "url": "https:\/\/balyberdin.com\/hey\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "34",
            "url": "https:\/\/balyberdin.com\/hey\/all\/ae-expressions\/",
            "title": "Подборка экспрешнов для After Effects",
            "content_html": "<p>Собрал список выражений для Аfter Effects, которые упрощают мою работу. Совсем простых в стиле <f>loopOut()<\/f> или <f>wiggle (.4,6)<\/f> здесь нет, но и ничего слишком сложного тоже.<\/p>\n<p>Своих экспрешнов здесь всего несколько. Большинство я взял из интернета и немного адаптировал под себя. Так что там где уместно, я указал ссылки на авторов.<\/p>\n<h2>Динамическая рамка для текста<\/h2>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp-text_01_@loop.mp4#t=0.001\" width=\"1280\" height=\"560\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Плашка, которая автоматически подстраивается под длину текста.<\/p>\n<p>Создайте прямоугольный <f>Shape Layer<\/f> и сверху отдельным слоем добавьте текст.<br \/>\nПримените экспрешн к параметру <f>Size<\/f> у шейпа:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">margin_width = 60;\nmargin_height = 40;\n\ntext_width = thisComp.layer(index-1).sourceRectAtTime().width;\ntext_height = thisComp.layer(index-1).sourceRectAtTime().height;\n\nbox_width = text_width + margin_width*2;\nbox_height = text_height + margin_height*2;\n\n[box_width, box_height]<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/creativecow.net\/forums\/thread\/changing-shape-layers-size-width-due-to-text-width\/\">© Kalleheikki Kannisto<\/a><\/p>\n<p>Если текст в несколько строк, то добавьте ещё этот экспрешн к <f>Position<\/f> у шейпа:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">x = value[0];\ny = content(&quot;Rectangle 1&quot;).content(&quot;Rectangle Path 1&quot;).size[1]\/2;\n[x,y]<\/code><\/pre><h2>Анимируемый wiggle<\/h2>\n<p>Простой способ анимировать wiggle с помощью двух слайдеров: первый отвечает за частоту, второй за амплитуду. Лучше анимировать только амплитуду.<\/p>\n<p>Добавьте эффект <f>Slider Control<\/f> на слой с экспрешном и продублируйте его.<br \/>\nПримените экспрешн к нужному параметру:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">w_freq = effect(&quot;Slider Control&quot;)(&quot;Slider&quot;);\nw_amplitude = effect(&quot;Slider Control 2&quot;)(&quot;Slider&quot;);\n\nwiggle(w_freq,w_amplitude)<\/code><\/pre><h2>Цикличный wiggle<\/h2>\n<p>Благодаря этому экспрешну, wiggle начинается и заканчивается в одной и той же точке.<\/p>\n<p>Если вдруг цикл не работает, то это скорей всего из-за того, что луп не успевает прийти в изначальное состояние за отведённое время. Просто увеличьте <f>loopTime<\/f> или <f>freq<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">freq = 1;\namp = 65;\n\nstartTime = 0; \/\/ На какой секунде начинается луп\nloopTime = 3; \/\/ Сколько секунд идёт\n\nt = (time+startTime) % loopTime;\nwiggle1 = wiggle(freq, amp, 1, 0.5, t);\nwiggle2 = wiggle(freq, amp, 1, 0.5, t - loopTime);\n\nlinear(t, 0, loopTime, wiggle1, wiggle2)<\/code><\/pre><p class=\"foot\"><a href=\"http:\/\/www.motionscript.com\/design-guide\/looping-wiggle.html\">© Dan Ebberts<\/a><\/p>\n<h2>Прикрепить шейп к одной стороне<\/h2>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp_size-2_01_@loop.mp4#t=0.001\" width=\"1280\" height=\"560\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Фиксирует одну сторону шейпа на месте, когда вы меняете <f>Size<\/f>.<\/p>\n<p>Примените к <f>Position<\/f> у шейпа:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">stickTo = &quot;left&quot;; \/\/ top, bottom, right or left\nchosenShape = content(&quot;Rectangle 1&quot;).content(&quot;Rectangle Path 1&quot;);\n\nif (stickTo == &quot;top&quot;){\n     x = chosenShape.position[0];\n     y = chosenShape.position[1]+chosenShape.size[1]\/2;\n}\n\nelse if (stickTo == &quot;bottom&quot;){\n     x = chosenShape.position[0];\n     y = chosenShape.position[1]-chosenShape.size[1]\/2;\n}\n\nelse if (stickTo == &quot;right&quot;){\n     x = chosenShape.position[0]-chosenShape.size[0]\/2\n     y = chosenShape.position[1]\n}\n\nelse if (stickTo == &quot;left&quot;){\n     x = chosenShape.position[0]+chosenShape.size[0]\/2;\n     y = chosenShape.position[1]\n}\n\n[x,y]<\/code><\/pre><h2>Риг для катящегося круга и квадрата<\/h2>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp_rolling_rig_01_@loop.mp4#t=0.001\" width=\"1280\" height=\"560\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><h3>Катящийся круг<\/h3>\n<p>Примените к <f>Rotation<\/f> и анимируйте <f>Position<\/f>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">transform.position[0]-(content(&quot;Ellipse 1&quot;).content(&quot;Ellipse Path 1&quot;).size[0]\/2)-transform.position[0]\/2<\/code><\/pre><h3>Катящийся квадрат<\/h3>\n<p>Работает как с шейпами, так и со слоями и композициями.<\/p>\n<p>Примените экспрешн к <f>Position<\/f>. Добавьте <f>Slider Control<\/f> на этот же слой. Анимируйте <f>Rotation<\/f>. Если квадрат катится неправильно, измените значение у <f>Slider Control<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">targetLayer = thisLayer;\nsquareSize = targetLayer.sourceRectAtTime().width;\nsquareDiag = (Math.sqrt(2)*squareSize)\/2\/3.5;\n\ntry{\n    squareOffset = effect(&quot;Slider Control&quot;)(&quot;Slider&quot;);\n}\n\ncatch(err) {\n    squareOffset = 0;\n}\n\n\nrot=transform.rotation;\nscl=transform.scale[0]\/100;\nw=(squareSize\/2)*scl;\nr=(degreesToRadians(rot))*2;\nt=transform.position;\n\n[t[0]+w*rot\/45,t[1]-(Math.abs((squareDiag+squareOffset)*Math.sin(r)))*scl];<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/youtu.be\/sVg8jnajLSk\">На основе экспрешна от Mikey Borup<\/a><\/p>\n<h2>Ступенчатые повороты<\/h2>\n<p>Альтернатива <f>time*n<\/f>. Только вместо плавного вращения создаются ступенчатые движения. Отлично подходит для анимации стрелок часов, шестерёнок и других похожих механизмов.<\/p>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp_rotator_01_@loop.mp4#t=0.001\" width=\"1280\" height=\"670\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Примените к <f>Rotation<\/f>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">angle = 15; \/\/ Угол поворота в секунду\nrotateDuration = 10; \/\/ Длительность поворота в кадрах\n\nrotateDurationFr = rotateDuration\/(1\/thisComp.frameDuration);\n\nwholeSecond = Math.floor(time);\nstartAngle = wholeSecond * angle;\nease(time, wholeSecond, wholeSecond + rotateDurationFr, startAngle, startAngle + angle)<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/creativecow.net\/forums\/thread\/clock-second-hand-ticking\/\">© Xinlai Ni<\/a><\/p>\n<h2>Продвинутые ступенчатые повороты<\/h2>\n<p>Практически то же самое, что и выше. Но с чуть большим количеством настроек.<\/p>\n<p>Примените к <f>Rotation<\/f>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">angle = 15; \/\/ Угол поворота\nrotateDuration = 6; \/\/ Длительность поворота в кадрах\ntimeStop = 5; \/\/ Длительность остановки между поворотами\noffset = 0; \/\/ Сдвиг начального положения в кадрах\n\nfr = timeToFrames(time)+offset;\n\ncycle = timeStop+rotateDuration;\nn = Math.floor(fr\/cycle);\ncur_phase = fr-n*cycle;\n\nif((cur_phase)&gt;timeStop){\nangle*n+(cur_phase-timeStop)*angle\/rotateDuration;\n}\nelse{\nangle*n;\n}<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/aexpressions.ru\/expressions\/circular\/analogue-clock\/\">© aexpressions.ru<\/a><\/p>\n<h2>Постоянный масштаб при скейле<\/h2>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp_maintain-scale_01_@loop.mp4#t=0.001\" width=\"1280\" height=\"670\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Когда вы привязываете один объект к другому и масштабируете родительский, оба слоя увеличиваются. Этот экспрешн не позволяет дочернему слою менять масштаб и только перемещает его по позиции.<\/p>\n<p>Примените к <f>Scale<\/f> у слоя, который должен сохранять постоянный масштаб:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">s = [];\nps = parent.transform.scale.value;\nfor (i = 0; i &lt; ps.length; i++){\ns[i] = value[i]*100\/ps[i];\n}\ns<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1a3ArTUHAJwVi-ObZofvz6IfrKbSGSENlaTIRTs8pAJU\/edit?pageId=116871612094468624414#gid=0\">© JR Canest<\/a><\/p>\n<h2>Переключатель по чекбоксу<\/h2>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp_switcher_01_@loop.mp4#t=0.001\" width=\"1020\" height=\"490\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Меняет одно значение параметра на другое по нажатию на чекбокс.<\/p>\n<p>Добавьте эффект <f>Checkbox Control<\/f> на слой с экспрешном. Примените экспрешн к любому параметру:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">if (effect(&quot;Checkbox Control&quot;)(1) == 0) 0 else 100<\/code><\/pre><h2>Луп для шейпов<\/h2>\n<p>Обычный <f>loopOut()<\/f> не работает с шейпами, но зато работает этот экспрешн.<\/p>\n<p>Примените к <f>Path<\/f> у шейпа:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">try{\npingPong = false; \/\/ Поставьте true, если нужен pingPong\n\ntimeStart = thisProperty.key(1).time;\nduration = thisProperty.key(thisProperty.numKeys).time-timeStart;\nquant=Math.floor((time-timeStart)\/duration);\n\nif(quant&lt;0) quant = 0\n\nif(quant%2 == 1 &amp;&amp; pingPong == true){\nt = 2*timeStart+ (quant+1)*duration - time;\n}\n\nelse{\nt = time-quant*duration;\n}\n}\ncatch(err){\nt = time;\n}\nthisProperty.valueAtTime(t)<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/aexpressions.ru\/expressions\/loop\/loopout-path-ping-pong\/\">© aexpressions.ru<\/a><\/p>\n<h2>Range Mapper<\/h2>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp_range-mapper_01_@loop.mp4#t=0.001\" width=\"1150\" height=\"560\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Преобразует значения из одного диапазона в другой.<\/p>\n<p>Добавьте <f> Slider Control<\/f> на слой. Примените экспрешн к нужному параметру:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">input = effect(&quot;Slider Control&quot;)(&quot;Slider&quot;);\n\ninputLow = 0;\ninputHigh = 100;\noutputLow = 466;\noutputHigh = 618;\n\nlinear(input,inputLow,inputHigh,outputLow,outputHigh)<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/creativecow.net\/forums\/thread\/range-mapping-expression\/\">© Dan Ebberts<\/a><\/p>\n<h2>Обводка независимая от скейла<\/h2>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp_stroke-scale_01_@loop.mp4#t=0.001\" width=\"1280\" height=\"670\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Сохраняет постоянную обводку у шейпов при изменении масштаба.<\/p>\n<p>Примените к <f>Stroke Width<\/f>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">value \/ length(toComp([0,0]), toComp([0.7071,0.7071])) || 0.001;<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/battleaxe.tumblr.com\/post\/101945073972\/maintain-stroke-weight-expression\">© Adam Plouff<\/a><\/p>\n<h2>Счётчики<\/h2>\n<p>Подборка из 6 экспрешнов для создания различных счётчиков. По сути, все эти счётчики представляют собой текст, привязанный к <f>Slider Control<\/f>, который можно анимировать при помощи ключей.<\/p>\n<h3>1. Обычный счётчик<\/h3>\n<div class=\"quarter-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp-counter_simple_01_@loop.mp4#t=0.001\" width=\"700\" height=\"140\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Счётчик с фиксированным количеством десятичных знаков.<\/p>\n<p>Добавьте эффект <f>Slider Control<\/f> к текстовому слою. Примените экспрешн к <f>Source Text<\/f>. Количество знаков после запятой обозначается параметром <f>toFixed(2)<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">parseFloat(effect(&quot;Slider Control&quot;)(&quot;Slider&quot;)).toFixed(2)<\/code><\/pre><h3>2. Счётчик с запятыми вместо точек<\/h3>\n<div class=\"quarter-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp-counter_comma_01_@loop.mp4#t=0.001\" width=\"700\" height=\"140\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Заменяет точку для десятичных знаков на запятую. Если нужен похожий сетап с большим количеством настроек, то он <a href=\"http:\/\/keyframed.tv\/how-to-format-a-slider-control-value-as-money-in-after-effects\/\">вот здесь<\/a>.<\/p>\n<p>Добавьте <f>Slider Control<\/f> на текстовый слой и примените экспрешн к <f>Source Text<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">c = parseFloat(effect(&quot;Slider Control&quot;)(&quot;Slider&quot;)).toFixed(2);\nc.toString().replace(&quot;.&quot;, &quot;,&quot;)<\/code><\/pre><h3>3. Счётчик с дополнительными знаками<\/h3>\n<div class=\"quarter-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp-counter_symbols_01_@loop.mp4#t=0.001\" width=\"700\" height=\"140\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Добавляет любые дополнительные символы в начале или конце счётчика.<\/p>\n<p>Добавьте <f>Slider Control<\/f> на текстовый слой и примените экспрешн к <f>Source Text<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">&quot;+&quot;+parseFloat(effect(&quot;Slider Control&quot;)(&quot;Slider&quot;)).toFixed(2)+&quot;%&quot;<\/code><\/pre><h3>4. Счётчик с нулями в начале<\/h3>\n<div class=\"quarter-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp-counter_zeros_01_@loop.mp4#t=0.001\" width=\"700\" height=\"140\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Превращает числа из <f>1 <\/f> в <f>001<\/f>.<\/p>\n<p>Добавьте <f>Slider Control<\/f> на текстовый слой и примените экспрешн к <f>Source Text<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">zerosAmount = 3;\n\nvar slider = effect(&quot;Slider Control&quot;)(&quot;Slider&quot;);\n\nfunction padStart(string, targetLength, character) {\n\tstring = (string instanceof String) ? string : string.toString();\n\ttargetLength = targetLength &gt;&gt; 0;\n\tcharacter = character || ' ';\n\n\twhile (string.length &lt; targetLength) {\n\t\tstring = character + string;\n\t}\n\nreturn string;\n};\n\nif (slider &gt;= 0) {\nzeroAmount = zerosAmount + 1;\npaddedString = padStart(parseFloat(slider.value).toFixed(0), zerosAmount, '0');\n}\n\nelse {\npaddedString = '-0'+padStart(parseFloat(slider.value).toFixed(0)*-1, zerosAmount, '0');\n}\n\npaddedString;<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/community.adobe.com\/t5\/after-effects\/how-to-create-a-counting-number-but-starting-with-zeros\/td-p\/10632356\">На основе экспрешна от Tomas Sinkunas<\/a><\/p>\n<h3>5. Счётчик с разрядами<\/h3>\n<div class=\"quarter-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp-counter_grouping_01_@loop.mp4#t=0.001\" width=\"700\" height=\"140\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Группирует цифры по разрядам, превращая <f>30000<\/f> в <f>30 000<\/f>.<\/p>\n<p>Добавьте <f>Slider Control<\/f> на текстовый слой и примените экспрешн к <f>Source Text<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">num = parseFloat(effect(&quot;Slider Control&quot;)(&quot;Slider&quot;)).toFixed(0);\nstr = isNaN(num) ? &quot;&quot; : (num * 1 + &quot;&quot;);\nstr.replace(\/(\\d)(?=(\\d\\d\\d)+([^\\d]|$))\/g, '$1 ');<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/creativecow.net\/forums\/thread\/number-expression-with-decimals\/\">© Tomas Bumbulevičius<\/a><\/p>\n<h3>6. Счётчик для больших чисел<\/h3>\n<div class=\"quarter-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp-counter_large_01_@loop.mp4#t=0.001\" width=\"700\" height=\"140\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Счётчик, привязанный к <f>Slider Control<\/f>, не идёт дальше 1 000 000. Поэтому если нужны большие числа, приходится использовать эффект <f>Angle Control<\/f>.<\/p>\n<p>Добавьте <f>Angle Control<\/f> на текстовый слой и примените экспрешн к <f>Source Text<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">number = Math.round(effect(&quot;Angle Control&quot;)(&quot;Angle&quot;)\/360);\n\nn=&quot;&quot; + number;\ns=&quot;&quot;;\nfor(i=0, l=n.length; i&amp;#60;l;  i++){\n    if(s &amp;&amp; s!=&quot;-&quot; &amp;&amp; (l-i)%3 ==0)\n                s+=&quot; &quot;; \n        s += n[i];\n}\ns;<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/chunkmotion.design\/resources\/after-effects-expressions\/\">© Chunk Motion<\/a><\/p>\n<h2>Мини-экспрешны<\/h2>\n<p>И, под конец, 4 полезных мини-выражения, которые часто пригождаются.<\/p>\n<h3>1. Привязка к слою выше или ниже<\/h3>\n<div class=\"half-video\"><div class=\"e2-text-video\">\n<video src=\"https:\/\/balyberdin.com\/hey\/video\/en_exp-index-1_01_@loop.mp4#t=0.001\" width=\"900\" height=\"560\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<\/div><p>Это не полноценный экспрешн, а только его часть. Вместо того, чтобы привязывать один слой к другому напрямую, иногда удобнее динамически привязывать к слою, который стоит выше или ниже слоя с экспрешном.<\/p>\n<p>В примере, я привязываю позицию у слоя с шейпом к любому слою, который стоит выше на таймлайне. Если нужна привязка к слою ниже, то используйте <f>index+1<\/f>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">thisComp.layer(index-1)<\/code><\/pre><h3>2. Постоянно ускоряющиеся повороты<\/h3>\n<p>Добавьте это к <f>Rotation<\/f>, чтобы создать вращение, которое становится быстрее с каждой секундой:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">time*time*time*time<\/code><\/pre><h3>3. Ключи для time*n<\/h3>\n<p>Добавляет постоянное движение, но оставляет возможность ставить ключи.<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">value+time*11<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/youtu.be\/rsW4fwscwKI?t=193\">© Ben Marriott<\/a><\/p>\n<h3>4. Привязка градиента к слою<\/h3>\n<p>Чтобы <f>Gradient Ramp<\/f> не слетал при перемещении слоя, добавьте на <f>Start<\/f> и <f>End<\/f>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">toComp(value)<\/code><\/pre><p class=\"foot\"><a href=\"https:\/\/aexpressions.ru\/expressions\/misc\/link-ramp-to-layer\/\">© aeexpressions.ru<\/a><\/p>\n<p>Это все выражения, которыми я пользуюсь на постоянной основе. Всего получилось 23.<br \/>\n<a href=\"https:\/\/balyberdin.gumroad.com\/l\/ae-expressions\">📁 Проект со всеми экспрешнами<\/a>, который вы можете скачать бесплатно.<\/p>\n",
            "date_published": "2021-02-09T22:22:30+03:00",
            "date_modified": "2025-06-08T21:03:44+03:00",
            "tags": [
                "after effects",
                "expressions"
            ],
            "image": "https:\/\/balyberdin.com\/hey\/pictures\/exp-cover-timeline.jpg",
            "_date_published_rfc2822": "Tue, 09 Feb 2021 22:22:30 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "34",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/balyberdin.com\/hey\/pictures\/exp-cover-timeline.jpg"
                ]
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}