このページはCOOL ONLINE終了に伴いO-Show様の許可を得て作成したBinary Heavenのミラーサイトです
[TOP] [Profile] [NScripter] [BBS] [Links]
中級編 No.5
複合ボタン
■概要■
前回の「スプライトボタン」で、スプライトをボタン化することができました。

しかし、NScripterにはボタン定義の方法がまだ存在します。


ここでは、マウスカーソルがボタンの上にのった時に他のスプライトまでも操作することができる「複合ボタン」の使い方を解説します。


使用命令:

「exbtn」(更新1018.txt)
「exbtn_d」(更新1018.txt)
「spstr」(更新1018.txt)

※どの命令も実際には、最新版に同梱の「0.txt」を参考
■スプライトボタンとの違い

複合ボタンは、スクリプトの流れとしてはスプライトボタンとほとんど同じです。

事前にスプライトを読みこみ、それにボタン番号を割り振るだけです。


複合ボタンがスプライトボタンと違うところは、ボタンの上にマウスカーソルがのったときの動作です。

スプライトボタンではそのボタンの画像がセル0からセル1に変わるだけですが、複合ボタンでは他のスプライトを表示・非表示させたり、表示させるセルを変えたりすることができます。

ということで、実際にはスプライト番号とボタン番号に加えて、スプライトを操作する制御文字列を加えてボタン定義を行います。制御文字列については後で説明します。



■スクリプト

では、スクリプトです。



	lsp 0,":a/2,0,3;spbotan_01.jpg",255,155
	lsp 1,":a/2,0,3;spbotan_02.jpg",255,215
	lsp 2,":a/2,0,3;spbotan_03.jpg",255,275

	lsph 3,":s#FFFFFFオレンジ色になります",100,350
	lsph 4,":s#FFFFFFきみどり色になります",100,350
	lsph 5,":s#FFFFFFむらさき色になります",100,350

	lsph 6,":s#FF8833#33FF88#8833FF→こんな色です",270,380

	print 1


	exbtn_d "C3C4C5C6"
	
	exbtn 0,1,"P3C4C5P6,0"
	exbtn 1,2,"C3P4C5P6,1"
	exbtn 2,3,"C3C4P5P6,2"


*loop

	btnwait %0

	if %0 == 0 goto *loop
	if %0 == -1 goto *loop

	if %0 == 1 bg #FF8833,1
	if %0 == 2 bg #33FF88,1
	if %0 == 3 bg #8833FF,1


このスクリプトは、前回の「スプライトボタン」と同じくボタンを押すと背景の色が変わるというスクリプトで、それのボタン定義の方法に手を加えて複合ボタンにしたものです。


画像は前回と同じものを使っています。

前回の画像をハードディスクに保存して実際にスクリプトを実行してみると感じがよくつかめると思います。



■スプライトを読みこむ

このスクリプトは、それぞれのボタンにマウスカーソルをのせると「○○色になります」という説明が表示され、さらにその色で「→こんな色です」という文字が表示される流れになっています。

そのため、ボタン用のスプライト以外にも文字列スプライトを非表示状態(lsph)で読みこんでいます。


「○○色になります」という文字列スプライトは白色で三種類、全て同じ位置に配置しています。

「→こんな色です」という文字列スプライトは、一つのスプライトでセルを三つ用意しています。文字列スプライトではRGBの色指定を増やしていくだけでセルを増やすことができるので、それぞれの色のセルを用意しています。



■ボタン定義

複合ボタンのボタン定義では、「exbtn_d」「exbtn」という命令を使います。

「exbtn_d」という命令は、制御文字列を用いて「マウスカーソルがどのボタンにものっていない時」の状態を指定する命令です。複合ボタンを使う場合、毎回この命令を書かなければなりません。当然ながら、「exbtn_d」は一つだけ書けばよいです。


「exbtn」という命令は、「スプライトボタン」でいう「spbtn」命令と同じもので、それぞれのスプライトにボタン番号を割り振ります。

それに加えて、「exbtn」では制御文字列を用いて「そのボタンにマウスカーソルがのった時」の状態を指定します。


ようするに、複合ボタンでは想定される状況ごとのスプライトの状態を、制御文字列を用いて記述していく形になるのです。



■制御文字列

スプライトの状態とは、「表示・非表示」と「どのセルが表示されているか」です。

これを制御文字列で表現することができます。

制御文字列は、「アルファベット+スプライト番号」の組み合わせで記述します。
その番号のスプライトの状態、という意味です。


非表示状態は「"Cスプライト番号"」です。

表示状態は「"Pスプライト番号"」です。セル0番が表示されます。

さらに表示させたいセルを指定する時は、「"Pスプライト番号,セル番号"」です。


上の三つのような指定を、連結して書いていくことができます。

なお、制御文字列はダブルクォーテーションでくくってください。



少しわかりにくいかも知れませんので、上のスクリプトを例にとってみましょう。

上のスクリプトのボタン定義の部分を下に示します。



	exbtn_d "C3C4C5C6"

	exbtn 0,1,"P3C4C5P6,0"
	exbtn 1,2,"C3P4C5P6,1"
	exbtn 2,3,"C3C4P5P6,2"


「exbtn_d」に注目してみてください。

どのボタンにもマウスカーソルがのっていない時、ボタンの説明を表示する必要はないので全て非表示にしています(C3C4C5C6)。

なお、ボタン自身(スプライト0・1・2)の状態は、記述する必要はありません。


三つ目の「exbtn」を見てください。

三つ目の「exbtn」では、むらさき色(#8833FF)になるボタンを定義しています。

なので、「むらさき色になります」という文字列スプライトであるスプライト番号5番は表示状態です(P5)。

「→こんな色になります」という文字列スプライトであるスプライト番号6番は、「#8833FF」のセル2番を表示状態にしています(P6,2)。



■複合ボタン以外での制御文字列利用

この、スプライトの状態を表現する制御文字列は、「spstr」という命令を使うことでボタン以外で普段から利用することができます。



	spstr "C3C4P5P6,2"

	print 1


つまりは、表示・非表示を切り替える「vsp」命令と、表示するセルを切り替える「cell」命令を組み合わせたような命令というわけです。
■総括■
複合ボタンを使うことで、きれいなメニューが作れそうです。


次はボタンのラスト、時間制限付きボタンです。

次へ   前へ   NScripterのIndexへ