ADOBE AFTER EFFECTS: Forum Expressions Tutorials Creative Cloud

Clock

COW Forums : Adobe After Effects Expressions

<< PREVIOUS   •   FAQ   •   VIEW ALL   •   PRINT   •   NEXT >>
Jack Parks
Clock
on Mar 5, 2010 at 8:51:09 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.
Thanks


Return to posts index

Jack Parks
Re: Clock
on Mar 5, 2010 at 11:28:08 am

Hello

Oops I just found all of the other posts and links to motionscript.com

Thanks


Return to posts index

Elad Menashe
Elegant way (but not bullet proof)
on Mar 6, 2010 at 10:05:01 am

There 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 simpler

The 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)




Return to posts index


Elad Menashe
Less elegant but more robust
on Mar 6, 2010 at 10:06:42 am

This 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:00

Enjoy

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


Return to posts index

<< PREVIOUS   •   VIEW ALL   •   PRINT   •   NEXT >>
© 2020 CreativeCOW.net All Rights Reserved
[TOP]