Activity › Forums › Adobe After Effects Expressions › Clock
-
Posted by Jack Parks on March 5, 2010 at 8:51 am
Hello I was trying to find an expression similar to a frame counter, but where I could start it at a specific number and count on like a clock. Starting at 21:19:20:02 for example so hours/minutes/seconds/frames.
ThanksElad Menashe replied 16 years, 4 months ago 2 Members · 3 Replies -
3 Replies
-
Jack Parks
March 5, 2010 at 11:28 amHello
Oops I just found all of the other posts and links to motionscript.com
Thanks
-
Elad Menashe
March 6, 2010 at 10:05 amThere are two ways to resolve the clock:
The first is using timeToTimecode (a built-in AE expression method)
Problem is it is bounded by 3 hours, each time above 3 hours will show 3:00:00:00
But the code is much simplerThe second option will be in the next message
startH = 1; // 21 will overflow
startM = 19;
startS = 20;
startF = 02;timeShift = startH * 3600 + startM * 60 + startS + startF * thisComp.frameDuration;
framesPerSec = 1/thisComp.frameDuration;
timeToTimecode(t = time + timeShift, timecodeBase = framesPerSec, isDuration = false)
-
Elad Menashe
March 6, 2010 at 10:06 amThis code will work in all cases, except overflowing of the Hours
in case you’ll get to 23:59:59:24 next frame will be 24:00:00:00Enjoy
separator = ":"// offset
startH = 21;
startM = 19;
startS = 20;
startF = 02;// calculate current time in H:M:S:F format
framesPerSec = 1/thisComp.frameDuration;
F = Math.round((time % 1) * framesPerSec);
timeRemainder = Math.floor(time);
S = timeRemainder % 60;
timeRemainder = timeRemainder - S;
timeRemainder = timeRemainder / 60;M = timeRemainder % 60;
timeRemainder = timeRemainder - M;
timeRemainder = timeRemainder / 60;H = timeRemainder; // there's no handling if H > 24...
// add offset
F = F + startF
S = S + startS
M = M + startM
H = H + startH// check overflowing
if (F >= framesPerSec)
{
F = F - framesPerSec;
S = S + 1;
}if (S >= 60)
{
S = S - 60;
M = M + 1;
}if (M >= 60)
{
M = M - 60;
H = H + 1;
}// add "0" to the beginning of the number if it is smaller than 10
StrF = (F < 10 ? "0" : "") + F;
StrS = (S < 10 ? "0" : "") + S;
StrM = (M < 10 ? "0" : "") + M;
StrH = (H < 10 ? "0" : "") + H;"" + StrH + separator + StrM + separator + StrS + separator + StrF
Reply to this Discussion! Login or Sign Up