0

I'm trying to work out a counter that simply goes like:

2.5M views

At the moment I've got this expression working along with a Slider Control:

var num = effect("Slider Control")("Slider")
num = Comma(num) + "M views";
[num]

function Comma(number)
{
number = '' + Math.round(number);
if (number.length > 3)
{
var mod = number.length % 3;
var output = (mod > 0 ? (number.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(number.length / 3); i++)
{
if ((mod == 0) && (i == 0))
output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
else
output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
}
else return number;
}

This though only makes my text layer go like:

2M views

I've tried already replacing the first line with:

effect("Slider Control")("Slider").value.toFixed(2)

But this adds a decimal followed by a comma normally, it doesn't work anyways on this expression but maybe it can help.

Thanks in advance.

1 Answer 1

1

Here's my cheat sheet for numeric text animations like this:

slider = (effect("Slider Control")("Slider").value);
tidying = (Math.round(slider * 100))/100;
SourceText = "$" + tidying + "bn" +"\r" +"DEBTS";

the .value is sometimes needed to force AE to look at the slider as a number, not as an object.

tidying is being done to round up to 2 decimal places

\r gives a line break

text is appended with +”text”+

you can comment out some text /* like this */

So in the example above, you would get an output like this:

$5.23bn
DEBTS

So for your specific example, try something like this:

slider = (effect("Slider Control")("Slider").value);
tidying = (Math.round(slider * 10))/10;
SourceText = tidying + "M views";

To specify showing a decimal place at all times (displaying "2.0" when your slider is set to "2"), use the "toFixed" function, like this:

slider = (effect("Slider Control")("Slider").value);
tidying = ((Math.round(slider * 10))/10).toFixed(1);
SourceText = tidying + "M views";

Screenshot: AE screenshot

2
  • Also, any way to keep the 0 when the number goes without decimal? Like 2.0 instead of 2 Apr 15, 2019 at 11:07
  • 1
    yes, you can use "toFixed(1)" to round to show one decimal place at all times - so: slider = (effect("Slider Control")("Slider").value); tidying = ((Math.round(slider * 10))/10).toFixed(1); SourceText = tidying + "M views";
    – tomh
    Apr 23, 2019 at 13:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.