我正在做一个小实验,我只需要有人指导我..
我想制作自己的自定义语法着色(用于 Javascript),并且需要动画。
最大的优点是(如果可能的话)是使用着色器语言进行字体动画(片段着色器)的可能性。这样的事情在 Atom 中可能吗?
例子:
那么两个想法是“基于事件的”动画和“持久动画”。
基于事件:
想象一下你在写 Javascript,当你写“函数”时,它并没有直接着色,而是慢慢地淡入它的颜色。
示例代码:
keyword('function').on('creation', function(keywordAnimableObject) {
keywordAnimableObject.fromTo ({opacity:0, color:rgb(0,0,0)}, {opacity:1, color:rgb(1,1,0) });
});
持久化:
每个关键字或符号(if、else &&、函数、()、{}、逗号等)都有自己的频率。假设“函数”的频率为 0.5Hz,否则为 0.25Hz ......等等。
例如,此频率将修改关键字颜色“色调”。
keyword('function').on('idle', function(keywordAnimableObject, time) {
var baseColor = rgb(1,1,0);
var frequency = 0.5;
var currColor = hueShiftBy(baseColor, Math.sin(time*2*PI*frequency);
keywordAnimableObject.set({ color: currColor });
});
此外,如果可以使用着色器,每个关键字都会有微妙的动画模式。
现在想象一下,如果你在某处有错误,频率会更高,例如 1.5Hz 和更“烦人”。
allKeywords().on('notDeclared', function(keywordAnimableObject, time) {
var baseColor = Color.red;
var frequency = 1.5;
var currColor = hueShiftBy(baseColor, Math.sin(time*2*PI*frequency);
keywordAnimableObject.set({ color: currColor });
});
好的,我意识到这可能很烦人,但我认为值得尝试:)。不仅用于动画制作,而且真正制作精美的语法样式,而不仅仅是着色..