[mtext] は一回で終わってしまうので、繰り返して欲しい時は textillate を指定するのですが、面倒くさいのでマクロにしてみた。
リピートするテキストなので [rtext] にしましたが、マクロ名は好きに。
コード
[macro name=rtext]
[iscript]
tf.layer = mp.layer || "0";
tf.name = "rtext";
if(mp.name) tf.name += "," + mp.name;
[endscript]
[ptext layer=&tf.layer name=&tf.name *]
[iscript]
mp.name = tf.name.split(",");
let new_name = "";
for (let i = 0; i < mp.name.length; i++) {
new_name += "." + mp.name[i];
}
let count = 1;
$(new_name).textillate({
loop: mp.loop || true,
minDisplayTime: mp.time || 2000,
initialDelay: mp.initialdelay || 0,
in:{
effect : mp.in_effect || "fadeIn",
delayScale: mp.in_delay_scale || 1.5,
delay: mp.in_delay || 50,
sync: mp.in_sync || false,
shuffle: mp.in_shuffle || false,
reverse: mp.in_reverse || false,
callback: function () {
if(Number(mp.count) == count && mp.fadeout != "true"){
const rtext = $(new_name).html();
$(new_name).html(rtext);
}
}
},
out:{
effect : mp.out_effect || "fadeOut",
delayScale: mp.out_delay_scale || 1.5,
delay: mp.out_delay || 50,
sync: mp.out_sync || false,
shuffle: mp.out_shuffle || false,
reverse: mp.out_reverse || false,
callback: function () {
if(mp.count){
if(Number(mp.count) > count){
count ++;
}else{
if(mp.fadeout == "true") $(new_name).remove();
}
}
}
}
});
delete tf.layer;
delete tf.name;
[endscript]
[endmacro]
使い方
ほぼ [mtext] と同じパラメータがそのまま使えます。
自動的にclass名「rtext」が付きます。free タグで制御する時に使用してください。
同時に複数のテキストを表示する場合は、name
パラメータは必須です。別々の名前を指定してください。
追加したパラメータ
パラメータ名 | 必須 | 説明 | 初期値 |
---|---|---|---|
loop | × | ループするか。しない場合は [mtext] 使えば良いと思うけど…。 | true |
initialdelay | × | アニメーション開始までの遅延時間。 | 0 |
count | × | 何回ループするか。 | - |
使えなくなるパラメータ
パラメータ名 | 必須 | 説明 | 初期値 |
---|---|---|---|
wait | × | count 使用時に処理待ちしたい時は、[wait] タグを使ってください。 | - |
雑解説
色々面倒くさいので [ptext] にtextillate を指定しています。