Files
krkr2doc/docs/kag3doc/contents/ReadUnread.html
2016-09-08 17:50:19 +09:00

113 lines
6.4 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<!-- generated by to_html.pl from ReadUnread.xml -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>未読/既読処理について</title>
<meta name="author" content="W.Dee" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link href="browser.css" type="text/css" rel="stylesheet" title="吉里吉里関連リファレンス用標準スタイル" />
<link href="mailto:[email protected]" rev="Made" />
<link href="index.html" target="_top" rel="Start" title="トップページ" />
</head>
<body>
<h1><a id="id179" name="id179">未読/既読処理</a>
</h1><div class="para"><div>
 未読とはユーザがシナリオをいまだ読んでいないということで、既読とはユーザがすでに読んだということです。<br />
 KAG は、未読の部分と既読の部分でメッセージの表示速度を変えたり、既読の部分では [l] タグを無効にしたりする事ができます。<br />
<br />
 未読/既読の記録はシステム変数のうち、<code class="inlinecode">trail_</code> で始まる変数に記録されます。未読/既読の記録を行うには <code class="inlinecode">Config.tjs</code><code class="inlinecode">autoRecordPageShowing</code> を true に設定する必要があります。<br />
</div></div>
<h1><a id="id180" name="id180">未読部分と既読部分</a>
</h1><div class="para"><div>
 KAG では、未読部分/既読部分はラベルを目印にして分けられています。<br />
 システム変数の <code class="inlinecode">trail_シナリオファイル名_ラベル</code> という形式の変数に記録されます。たとえば、first.ks の *start というラベルであれば、<code class="inlinecode">sf.trail_first_start</code> という変数名になります。<br />
 この変数が void ( つまり未定義; 数値と比較するときは 0 として見なされます ) ならば 未読で、1 以上であれば既読です。1 以上の場合はその部分を読んだ回数になります。<br />
<br />
 基本的に、一つのラベルから次のラベルや [s] タグまでが一つの「部分」として処理されます。<br />
 たとえば、以下のようなシナリオがあるとすると、各色で色分けされたシナリオが各部分ということになります。<br />
<br />
<table width="100%">
<tr><td bgcolor="#ffc0c0"><span class="script">
*部分その1<br />
@cm<br />
ここは部分その1です。[l][r]<br />
普通は次のラベルまでが一つの「部分」となります。[p][r]<br />
</span></td></tr>
<tr><td bgcolor="#c0ffc0"><span class="script">
*部分その2<br />
@cm<br />
ここは部分その2です。[p][r]<br />
</span></td></tr>
<tr><td bgcolor="#c0c0ff"><span class="script">
*部分その3<br />
@cm<br />
ここは部分その3です。[l][r]<br />
[[s]タグまでも一つの「部分」となります。[s]<br />
</span></td></tr>
</table>
<br />
 この「部分」を単位にして、未読既読が処理されます。<br />
<br />
 初期状態ではすべての部分が未読であるとされています。<br />
</div></div>
<h1><a id="id181" name="id181">既読判定</a>
</h1><div class="para"><div>
 これらの「部分」が既読と見なされるには条件があります。原則として、「次のラベルに到達したり [s] タグに到達した」場合にその「部分」が既読であると見なされ、システム変数に記録されます。<br />
 つまり、ユーザが「部分」の途中でプログラムを終了したりして読むのをやめた場合は既読とは見なされない事になります。最後までその「部分」を読まないとなりません。<br />
</div></div>
<h1><a id="id182" name="id182">シナリオ制御と既読判定</a>
</h1><div class="para"><div>
 途中にリンクや jump タグなどがあってシナリオが分岐したりする場合はすこし処理が変わります。<br />
<br />
<dl>
<dt>リンクの類 ( link や button タグ ) でジャンプする場合</dt>
<dd> これらのタグによってユーザが選択肢などを選択してシナリオの別の部分にジャンプする場合は自動的に既読となります。<br />
 たとえば以下の例で、<br />
<br />
<code class="bq">*select<br />
ここの部分は、ユーザが選択肢を選択した時に既読になります。[r]<br />
[link&nbsp;target=*t1]選択肢1[endlink][r]<br />
[link&nbsp;target=*t2]選択肢2[endlink][r]<br />
@wait&nbsp;time=3000<br />
@jump&nbsp;target=*timeout<br />
</code>
<br />
 選択肢が @wait タグでタイムアウトになる前に選択された場合はその時点で既読という事になります。ちなみに通常の選択肢の使い方では link タグで選択を表示し終わると [s] タグが来ると思うのでその時点で既読になります。<br />
 link タグや button タグには contpage という属性があって、これを false にすると、その時点でジャンプを行っても既読とはされません。<br />
</dd>
<dt>jump タグ</dt>
<dd> jump タグでジャンプを行う場合もその時点で既読とされます。この場合も coutpage という属性があって、これを false に設定すると既読とはされません。<br />
</dd>
<dt>call と return</dt>
<dd> call タグでサブルーチンを呼ぶときは既読となりません。この場合も coutpage という属性があって、これを true に設定するとその時点で既読とされます。<br />
 retrun タグはその時点で既読となります ( 呼び出し元が既読になるのではなくて、そのサブルーチンの、return タグのある部分が既読になる )。この場合も coutpage という属性があって、これを false に設定すると既読とはされません。<br />
</dd></dl></div></div>
<script type="text/javascript" charset="UTF-8" src="documentid.js" ></script>
<script type="text/javascript" charset="UTF-8" src="postcontent.js" ></script>
</body>
</html>