示範一下用到 move 的特效~ (不是卡拉ok)
似乎同一行事件不能用多於一個 {\move} 碼..
所以要為每個區塊創建一個對話事件...
效果是顯示時, 每行的每個字會較左邊移動過來並淡入,
淡出時會向右移一點
[PHP]
//= [INIT] =========================================
$blockCount = get_block_count();
$markStartTime = get_event_start_time();
$markEndTime = get_event_end_time();
//= [CODE] =========================================
$count = 0;
$interval = 70;
$offset = 20;
$y = 450; //字幕位置 (Y 軸)
$nextdelay = 5;
for ($i=0; $i < $blockCount; $i++)
{
//$startpos 是字幕的 X 軸
// 起始位置, 但因為vobsub的位置定位會根據style中設定的
//alignment值不同, 所以用的時候可能要再調一下.
//(上邊 $y 的值也一樣)
$startpos = (25 * $i);
$endpos = $startpos + $offset;
$s = "{\\\\fad($interval,0)}";
$s .= "{\\\\move($startpos,$y,$endpos,$y,0,$interval)}";
$s .= "";
add_new_line();
set_line_param(DIALOG_LAYER, "1$count");
set_line_param(DIALOG_TEXT, $s);
$startTime = $markStartTime + ($i * ($interval / 10 + $nextdelay));
set_line_param(DIALOG_START, "$startTime");
set_line_param(DIALOG_END, "$markEndTime");
//==[上邊處理進入, 下面處理淡出]===========
$fadeoutx = $endpos + $offset;
$s = "{\\\\fad(0,50)}";
$s .= "{\\\\move($endpos,$y,$fadeoutx,$y,0,200)}";
$s .= "";
add_new_line();
set_line_param(DIALOG_LAYER, "2$count");
set_line_param(DIALOG_TEXT, $s);
$startTime = $markEndTime;
$endTime = $markEndTime + ($i * 2);
set_line_param(DIALOG_START, "$startTime");
set_line_param(DIALOG_END, "$endTime");
$count++;
}
?>[/PHP]