text 레이어의 숫자 AE를 변경하는 expression

AfterEffects js 기반 스크립트 언어 expression
이것은 text층의 숫자를 점차적으로 더하거나 빼는 스크립트입니다.
예를 들어 500에서 700으로 천천히 가다가 200으로 줄인다.
모션 프리셋에서 찾을 수 없기 때문에 학습하면서 합니다.

1. 먼저 expression 이동을 시도해 본다


타임라인 창에서
텍스트/원본 텍스트 옆에 있는 시간 감시 + 클릭을 시작하고 expression 화면을 보냅니다.
간단하게 말하면expression 마지막 줄의 값은 속성으로 되돌아옵니다.
여기 있다
"200"
텍스트 층에 200이 표시됩니다.
나 안 가.나는 그다지 익숙하지 않다.

2. 트리거


시동 트리거가 뭐야?
키프레임과 스크립트를 직접 기입하면 조정 작업의 사망을 초래하기 때문에 도층의 시간 표시를 터치합니다.
이것은 도면층의 타임라인에 주석을 붙인 물건이다.
금방 해볼게요.
원하는 시간에 레이어 선택
레이어/태그 추가
를 참고하십시오.
그때는 평어에 그때가 종점이 되는 숫자를 넣는다.
이런 느낌을 해봤어요.

단순 단위.

3. 골격


한 마디로 하면 먼저 두 개의 표시를 얻은 다음에 중간의 시간선을 천천히 바꾼다.
var layIn = thisLayer.marker.key(1);
var layOut = thisLayer.marker.key(2);
var dispText = Number(layIn.comment);

if(layIn.time < time && time <= layOut.time){
  var timeSpan = layOut.time - layIn.time;
  var timeStep = (time - layIn.time) / timeSpan;
  var numSpan = layOut.comment - layIn.comment;
  dispText = parseInt(Number(layIn.comment) + numSpan * timeStep);

}else if(layOut.time < time){
  dispText = layOut.comment;
}
dispText;
이렇게 된 기분이야.
시간은 글로벌 변수로 현재 시간을 표시합니다.
첫 번째 댓글 100과 500의 중간 시간대에 숫자가 바뀔 것이다.

4. 유니버설


나는 숫자를 몇 번 바꾸고 싶어서 다시 한 번 해 보았다.
// 前マーカーのindexを取得
var getNowIndex =function(){
  // 今のタイムラインに一番近いマーカーを取得
  var m = thisLayer.marker.nearestKey(time);
  var nowIndex;
  // nearestKeyが前後関係なく近いマーカーを取ってしまうので、
  // 前のマーカーを返すようにごにょごにょする
  if(m.time < time){
   nowIndex = m.index;
  }else{
   nowIndex = m.index -1;
  }
  return nowIndex;
};

// 表示textを取得
var getDispText = function(nowIndex){
  var layIn = thisLayer.marker.key(nowIndex);
  var layOut = thisLayer.marker.key(nowIndex + 1);
  var dispText = layIn.comment;
  if(layIn.comment == layOut.comment){
    return dispText;
  }
  if(layIn.time < time && time <= layOut.time){
    var timeSpan = layOut.time - layIn.time;
    var timeStep = (time - layIn.time) / timeSpan;
    var numSpan = layOut.comment - layIn.comment;
    dispText = parseInt(Number(layIn.comment) + numSpan * timeStep);
  }else if(layOut.time < time){
    dispText = layOut.comment;
  }
  return dispText;
};

// main logic
var maxIndex = thisLayer.marker.numKeys;  // マーカーの総数を取得
if(1 < maxIndex){
  var nowIndex = getNowIndex();
  if(nowIndex < 1)nowIndex = 1;
  if(nowIndex < maxIndex){
    getDispText(nowIndex);
  }else{
    thisLayer.marker.key(maxIndex).comment;
  }
}
이렇게 된 기분이야.
예쁘게 쓸 수도 있고.
그리고 지금 스크립트는 숫자가 등속으로 바뀌어요.
ease(t, tMin, tMax, value1, value2);
easeIn(t, tMin, tMax, value1, value2);
easeOut(t, tMin, tMax, value1, value2);
이렇게 함수를 사용하면 이스트가 쉽게 생길 수 있으니 시도해 보세요.
시간 표시는 처음 사용하지만 여러 가지 진전이 있을 것 같은 예감이 든다.
끝맺다

좋은 웹페이지 즐겨찾기