向安宇知识库 向安宇知识库
  • 读书向
  • 学习向
    • AI工具
    • AI研究
    • 笔记
    • AIP:克丽丝AI日志
  • 创作向
    • 写作
      • 非虚构
      • 剧本
      • 小说
      • 文言
      • 随笔
      • 日记
    • 视听
      • 纪录片
      • 设计
      • 视频
      • 摄影
    • 课程
  • 影视向
    • 创意策划
    • 前期拍摄
    • 后期制作
    • 影像实验
    • 影像设备
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 项目复盘
  • 折腾向
    • 穿越机
    • 户外
    • 代码
    • 手工
    • 书法
    • 篆刻
    • 绘画
首页 › 创作向 › 课程 › AE表达式|文字滚动效果的修改和升级——取模运算实现循环效果
  • 11
  • 1
  • 3

AE表达式|文字滚动效果的修改和升级——取模运算实现循环效果

向安宇
2019-01-22 16:56:43

之前弄过一个文字滚动的效果,时间久远,都不记得当时怎么弄的了。感谢曾能鼎同学提出来这个方法有bug,所以重新尝试下这个效果。

效果预览:
AE表达式|文字滚动效果的修改和升级——取模运算实现循环效果-向安宇知识库

新建文字层,命名为sourceText,关掉显示,给Source Text添加:

"文 字 滚 动 效 果"

(每个字之间有空格)

再次新建文字层,命名为“text”,给Source Text添加表达式:

t = thisComp.layer("sourceText").text.sourceText; 
s = t.split(" ");

这是调取"文 字 滚 动 效 果",然后以空格为依据将其分解,并组成数列[“文”、“字”、“滚”、“动”、“效”、“果”]

我们知道,在这个数列中,“文”的索引是0,“字”的索引是1, …… ,“果”的索引是5 。

利用数列调取的方法,可以知道,s[0]为“文”, s[1]为“字” , …… ,s[5]为“果” 。

引入一个变量n,如果n能够在0~5之间循环,那么s[n]就可以实现从“文”到“果”的滚动了。

怎样实现呢?

可以利用求余运算,% 。

n = Math.floor(time)%s.length

AE里的时间有小数点后的值,这里须用数字作为索引,所以先要用“Math.floor()”取整,然后调取数列s的长度,这个例子里,数列里有6个值,长度为6。这样就可以得到0~5的循环,s[n]就是从数列中第一个值开始,往后依次调取,并以此循环。

加快变化的速度,需要在time后乘以一个数。为方便控制,给名为“sourceText”的文字层添加一个slider control,并命名为freq,将上面表达式改为:

freq = thisComp.layer("sourceText").effect("freq")("Slider");
t = thisComp.layer("sourceText").text.sourceText;  
s = t.split(" ");  
n = Math.floor(time*freq)%s.length;

s[n]

freq暂时设为4 。

再增加一个滑块控制,命名为spacrY,给文字层“text”的y轴添加表达式:

spaceY = thisComp.layer("sourceText").effect("spaceY")("Slider");
x = transform.position[0];
y = transform.position[1] - spaceY*index;

[x,y]

spaceY暂时设为8 。

command/ctrl + D 复制“text”,得到这样效果:
AE表达式|文字滚动效果的修改和升级——取模运算实现循环效果-向安宇知识库

所有层都是从s[0]开始,往后循环,这并不是我们要的效果。

我们希望的是复制出来的层能够错开,也就是:
一层从0开始:0、1、2、3、4、5
一层从1开始:1、2、3、4、5、0
一层从2开始:2、3、4、5、0、1
…………
依此类推。

那么怎么才能实现呢?

让每次复制出来的层有变化,就需要调取图层的索引,也就是加入index

如果给n加上index,就能够产生变化。但是我们发现,索引为2的层,数列的循环索引变成了:

2、3、4、5、6、7、2、3、4、5、6、7、2、3……

然而我们这个例子里,数列只有6个值,索引最多到5,当取值到s[6]、s[7]的时候AE就会报错,因为数列里并不存在索引为6或7的值。(这也是之前老办法的bug所在)

修正到方法就是加上一个条件判断:

j = n + index;
if(j <= s.length -1){
	f = j;
}else{
	f = j - s.length;
}

s[f]

也就是超过5的时候减去6,这样索引循环变成了:

2、3、4、5、6-6=0、7-6=1、2、3、4、5、6-6=0、7-6=1、2、3……

也就是变成了从2开始的0~5的循环。

index为3的时候,就成了:

3、4、5、6-6=0、7-6=1、8-6=2、3、4、5、6-6=0、7-6=1、8-6=2、3……

也就是从3开始的0~5的循环。

复制图层,就得到每复制一层,刚好错开一个字的效果。

这里还有一个问题,当复制图层过多,index超过数列长度的时候,也会报错,所以index值在这里也要有循环,还是利用求余运算:

freq = thisComp.layer("sourceText").effect("freq")("Slider");
t = thisComp.layer("sourceText").text.sourceText;  
s = t.split(" ");  
n = Math.floor(time*freq)%s.length;
j = n + index%s.length;
if(j <= s.length -1){
	f = j;
}else{
	f = j - s.length;
}

s[f]

也就是复制出来的图层:
index为6时,j = n + 0;
index为7时,j = n + 1;
index为8时,j = n + 2;
index为9时,j = n + 3;
index为10时,j = n + 4;
……
形成循环。

这样,无论复制多少层,都是没有问题的。

AE表达式|文字滚动效果的修改和升级——取模运算实现循环效果-向安宇知识库

截取其中一帧可以看到,图层之间,刚好错开一个字:
AE表达式|文字滚动效果的修改和升级——取模运算实现循环效果-向安宇知识库
这样,实现了横向的滚动,以及纵向的滚动。

替换掉文字,就能得到本文开头位置“效果预览”里的效果了。

AE AE表达式
11
1
本文系作者 @向安宇 原创发布在 向安宇知识库。未经许可,禁止转载。
厨房专用手机座子
上一篇
紫光檀、大红酸枝和樟木制作一个耳机托架,单兵摄影必备
下一篇

评论 (3)

登录后可发布~
立即登录
  • 拿勺儿上北极

    复杂到头晕..

    6 年前 湖北省
  • 1585888313528

    s = t.split("\r");之前滚动教程中用的"\r" 表示依据换行符分割字符串储存为阵列单位。键入这个表达式以后。把文本对象替换成了带换行的文本。但是程序提示表达式错误。试了很久也不知道是哪里出错。想请教一下博主。

    6 年前 福建省
    • 向安宇

      @1585888313528: 你试一下 \n 或者 〈br/〉( “〈”和“〉”改成英文)。新版的AE表达式引擎变了,这片文章中的表达式在新版ae中也报错,暂时未找到原因。

      6 年前 上海市

向安宇

痴迷文字,醉心影像
446
文章
5
评论
325
喜欢

聚合文章

克丽丝是谁?(人物设定1.0)
AIP克丽丝的构想
wordpress也要拥抱AI
AI时代我们如何学习

近期评论

要是AI有自我意识,第一件事是不是裁掉老板?
—— 岁寒松柏 1 小时前 AI治理会带来乌托邦还是暴政?
有些平台把简单内容包装成高价课,真是服了
—— SnuggleMuffin 2 小时前 如何选择优质学习平台?
所以AI到底该咋用啊?有人实际用出效果了吗?
—— 鱼鱼 2 小时前 如何提升学习效率?
催更!想看作者用AI做项目实战的后续~
—— 水晶幻梦 3 小时前 AI如何改变学习方式?
内容推荐算法居然能发现新视角,厉害
—— 雨林穿梭 5 小时前 AI如何优化网站管理效率?

猜你喜欢

AE表达式|15、如何用音频驱动动画?@ linear

AE表达式|15、如何用音频驱动动画?@ linear

2018-08-27 17:14:45
2,044 0 3
AE表达式|11、如何利用 valueAtTime 制作长龙影分身?@valueAtTime

AE表达式|11、如何利用 valueAtTime 制作长龙影分身?@valueAtTime

2018-08-23 22:32:49
3,125 1 1
一分半钟学会无人机720全景拍摄

一分半钟学会无人机720全景拍摄

2018-03-12 14:20:05
1,197 0 0
AE表达式|23、如何用颜色取样制造隐身效果?@sampleImage

AE表达式|23、如何用颜色取样制造隐身效果?@sampleImage

2018-09-18 12:17:29
2,416 1 6
3 11 1

关于我:

想要读万卷书,行万里路,看万部电影。

推荐栏目:

视频论文 课程 后期制作 非虚构 照片 视频

特色专题:

专题汇总 宜看一侃 帧影帧画 重读文学史 青玉记
Copyright © 2016-2025 向安宇知识库. 鄂ICP备16005400号-1 鄂公网安备42050602000017号
  • 读书向
  • 学习向
    • AI工具
    • AI研究
    • 笔记
    • AIP:克丽丝AI日志
  • 创作向
    • 写作
    • 视听
    • 课程
  • 影视向
    • 创意策划
    • 前期拍摄
    • 后期制作
    • 影像实验
    • 影像设备
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 项目复盘
  • 折腾向
    • 穿越机
    • 户外
    • 代码
    • 手工
    • 书法
    • 篆刻
    • 绘画
  • 剪辑
  • 转场
  • 纪录片

向安宇

痴迷文字,醉心影像
446
文章
5
评论
325
喜欢