AIRNovel テクニック wiki (非公式) menu_button

選択肢の利用

作成日:2017.05.07、最終更新日:

基本

文字を利用

[link label=*a]選択肢[endlink]
[s]

*a
[er]
選択肢の後の処理

[link]タグで指定できることについては、タグリファレンスを参照してください。
必ず、[endlink]で終了を明示すること、[s]で選択待ちを行うこと、選択後の移動先で早々に選択肢を消すこと(消さない演出であれば不要です)。
また、選択後にセーブしてロードすると選択前に戻るという事態を防ぐために、移動先で[record_place]でセーブポイントを設定するようにした方がいいです。

画像を利用

[button label=*a pic="button" top=50 left=50]
[s]

*a
[er]
選択後の処理

注意事項はほぼ[link]の場合と同じです。
コントロールボタンに使用する場合、本文とは違うレイヤに表示しないと[er]で一緒に消えてしまいます。 用意する画像は、通常時・押下時・マウスオーバー時の3種類を横に並べたものを準備します。
ボタン画像

音を付ける

[link][button]もマウスが乗った時、外れた時、クリックした時に効果音を鳴らすことができます。

  • clickse= : クリックした時の効果音
  • enterse= : マウスが乗った時の効果音
  • leavese= : マウスが外れた時の効果音

全部指定しても、指定しなくても、いくつかだけ指定しても、そこはお好みで。

応用

本文とは別のレイヤに選択肢

選択肢の文字を[ch]で表示して、[link][ch][endlink]の全てにlayer=で指定を行います。

[link label=*a layer=select][ch text="選択肢" layer=select wait=0][endlink layer=select]
[s]

*a
[clear_lay layer=select]
選択後の処理
[macro name=select]
	[link * layer=select]
	[ch * layer=select wait=0]
	[endlink layer=select]
[endmacro]

;使用時
[select label=*a text="選択肢"]
[s]

*a
[clear_lay layer=select]
選択後の処理

選択した選択肢のみを履歴に残す

選択肢を[ch record=false]で表示して、選択肢表示時には履歴に残らないようにします。
選択後の移動先で[rec_ch]を利用して選択結果を履歴に書き込みます。

[link label=*a][ch text="選択肢1" record=false wait=0][endlink][r]
[link label=*b][ch text="選択肢2" record=false wait=0][endlink]
[s]

*a
[er]
[rec_ch text="選択肢1"]
選択後の処理

;************
*b
[er]
[rec_ch text="選択肢2"]
選択後の処理

全ての選択肢を選んだら進める

準備用選択肢で判断用変数をtrueにし、進むよう選択肢は判断用変数が全てtrueの場合に表示するようにします。
準備用の選択処理後は選択肢表示部に戻るようにします。

*select
[er]
[link label=*a][ch text="選択肢1" wait=0][endlink][r]
[link label=*b][ch text="選択肢2" wait=0][endlink]
[if exp="select.a * select.b"]
	[r][link label=*c][ch text="次に進む用" wait=0][endlink]
[endif]
[s]

*a
[er]
選択後処理
&select.a = true
[jump label=*select]

*b
[er]
選択後処理
&select.b = true
[jump label=*select]

*c
[er]
話を進める
*select
[er]
[link label=*a][ch text="選択肢1" wait=0][endlink][r]
[link label=*b][ch text="選択肢2" wait=0][endlink]
[s]

*a
[er]
選択後処理
&select.a = true
[jump label=*c cond="select.a * select.b"]
[jump label=*select]

*b
[er]
選択後処理
&select.b = true
[jump label=*c cond="select.a * select.b"]
[jump label=*select]

*c
[er]
話を進める

選択回数で内容を変化させる

変数で選択回数をカウントし、一定カウントで処理を変化させます。

*select
[er]
[link label=*a][ch text="説明を聞く" wait=0][endlink][r]
[link label=*b][ch text="出かける" wait=0][endlink]
[s]

*a
[er]
&count = count + 1
[if exp="count > 3"]
	;4回目から表示
	何回説明をさせる気だ?[p][er]
[endif]
説明
[jump label=*select]

*b
[er]
選択後処理

時間制限のある選択肢

[wait]での時間待ちでは、[link][button]を関知できませんので、[event key=enter_frame]を使用します。

[link label=*selected][ch text="選択肢" wait=0][endlink]
[event key=enter_frame label=*timeout frame="&5 * const.flash.display.Stage.frameRate"]
[s]

*selected
選択した後の処理

;************
*timeout
時間切れの処理

arg=の利用

選択肢後の話は変わらず、ただ好感度が変化するだけの場合や、選択した選択肢のみを履歴に残すをマクロ化する場合等にarg=を利用すると便利です。
もちろん、その他にも色々使えますが、そこはアイデア次第です。

[link label=*a arg=5][ch text="お礼を言う" wait=0][endlink][r]
[link label=*a arg=10][ch text="笑顔でお礼を言う" wait=0][endlink]
[s]

*a
&love = love + const.an.eventArg
その後のストーリー
[macro name=select]
	[link * arg=%text]
	[ch * wait=0 record=false]
	[endlink]
[endmacro]
[macro name=after_choice]
	[rec_ch text=&const.an.eventArg]
	[er]
[endmacro]

;使用時
[select text="選択肢" label=*a]
[s]

*a
[after_choice]
選択後の処理

背景色でボタンっぽく

[link]b_color=b_alpha=と空白を利用すれば、なんとなくボタンっぽくできます。マウスオーバー時の背景色は変更できないのですが。
背景色の高さは最も大きい字に合わせられますので、そこも上手く利用すれば高さに余裕も持たせることができます。
マクロを組む場合は文字数を判断して空白を足すことも可能です。

[macro name=select]
	&t = mp:text
	[let_length text=&t name=len]
	*a
	[jump label=*b cond="len > 10"]
		&t = t + ' '
		[let_length text=&t name=len]
	[jump label=*a]
	*b
	[link * b_alpha=1 b_color=0x009933][span layout='fontSize="30"'] [span]
	[ch text=&t wait=0 record=false]
	[endlink]
[endmacro]

onenter=、onleave=の利用

あまり重い処理には不向きですが、軽い処理(レイヤの表示非表示の切替、短い文章の表示)くらいでしたらできますので、マウスオーバー時に背景画像を変更、説明の表示などに利用できます。
事前に画像の準備は行っておいて、visible=と位置調整を変えるくらいにしておく。文字表示の場合は一気に表示するくらいにしておくのがポイントです。
関知をよくするために、選択肢の間を開けておく方がいいです。
[button]でマウスカーソルを変化させるなんて事も可能です。

ボタン用画像の節約

マウスオーバー時やクリック時の変化が枠の変化や、半透明の画像を乗せる・外す程度でしたら、全てのボタン画像を用意するのではなく、基本画像と変化用のボタン画像にしてしまうという方法が利用できます。
ボタン用に準備できないスクリーンショットから取得する画像をボタンにする際にも利用できる方法です。

この画像を下に表示して この画像をボタンとして利用すれば この画像を用意したのと同じ事に
下絵 ボタン 合成

※透明の表現に市松模様を使用しています。

ボタンを押せなくする

より上(手前)にあるレイヤのものがのっていると、その下のボタンは反応しません。
たとえ透明でも邪魔をされて、反応しなくなります。ボタンとしましたが、選択肢でも同様です。
上手く利用すると、一気にボタンを用意しておいて、不要になったものの上に透明画像をのせて無効化することができます。ボタン毎にレイヤを用意したり、毎回消して設定し直すのも面倒ですし。

サンプル

応用で紹介した方法のサンプルです。

downloadanbookをダウンロード


 
up_button