GO BACK

REALbasic教室 その4


「外部ファイルの利用」


■グラフィックを動かす


 さて、単純に部品のプロパティを操作する程度のことはできるようになりました。が、これではどうもビジュアルな表現に欠けてしまいます。このように標準の部品だけでは物足りない場合、REALbasicは、ファイルを取り込んで利用するようになっています。では、手始めとしてグラフィックをREALbasicで使ってみることにしましょう。


1.まず、グラフィックファイルを作成します。これは適当なグラフィックソフトを使って作成して下さい。そしてPICTやGIFといったフォーマットでファイルに保存しておきます。下準備はこれで終わりです。

2.次に、REALbasicで新規にプロジェクトを作ります。そして、作成したグラフィックファイルをProjectウィンドウにドラッグ&ドロップしてください。グラフィックファイルが取り込まれ、「Image」という名前で登録されます。

3.Window1ウィンドウにCanvasを1つ配置します。そして作成したCanvasを選択し、PropertiesパレットのBackdropから「Image」を選んで下さい。グラフィックがプロジェクトに組み込まれていると、このプロパティでそれが選べるようになるのです。選択すると、Canvasに作成したグラフィックが表示されます。


 どうです、無事にグラフィックが表示されたでしょう?

 では、このグラフィックを動かしてみましょう。オブジェクトを動かすのは既にやりましたが、今回はちょっと違ったやり方をしてみます。Timerというオブジェクトを使い、放っておいてもずっと動きつづけるようにしてみましょう。

 Window1ウィンドウに、Timerを1つ作成して下さい。名前は「Timer1」のままで結構です。そしてPropertiesパレットで、Mode = 2-Multiple、Period = 1000としてください(デフォルトではこうなっているはずです)。

 出来上がったら、ブラウザを開き、Timer1のAction ()に以下のプログラムを記述して下さい。


Sub Action ()
	Dim W as Integer
	Dim H as Integer
	W = width - Canvas1.width
	H = height - Canvas1.height
	Canvas1.left = W * Rnd
	Canvas1.top = H * Rnd
End Sub

 これで完成です。プログラムを実行してみましょう。1秒間隔で、グラフィックがランダムに動くのがわかるでしょう。

 今回使ったTimerというオブジェクトは、一定時間が経過したら自動的にサブルーチンを実行するというオブジェクトです。このように一定時間ごとに繰り返しプログラムを動かす場合には、Timerオブジェクトを使います。

 Timerは、あらかじめ設定された時間が経過すると、自分自身のActionサブルーチンを呼び出して実行するというオブジェクトです。これには、2つの重要なプロパティがあります。


・Mode

実行状態を示すもの。0であればOFFになり、Timerは動作しない。1は1回だけ動作する。2は何度も繰り返してエンドレスに実行しつづける。


・Period

TimerがスタートしてからActionを呼び出すまでの間隔(時間)。単位はミリ秒(1000分の1秒)。


 Timerは、Modeが0(OFF)になっていない場合は、Window1が表示された瞬間にスタートします。この例ではModeが2になっていましたから、実行開始してからずっとエンドレスでActionを呼び出し続けていたわけです。

 Actionサブルーチンで行なっていることは、先にOvalを動かすのでやったのとほとんど同じようなことです。アプレットの横幅と縦幅からそれぞれCanvas1の横幅/縦幅を引いた値を計算し、それを元にして乱数を得て、Canvas1のleftとtopに設定しています。

 アプレットの横幅と縦幅を得るのに、「width」「height」というのを使っていますね。よく見ると、オブジェクトの指定がされていません。「Window1.width」と書くんじゃないのか…と思った人もいるでしょうね。

 REALbasicでは、ウィンドウ単位でプログラムが構成されています。ウィンドウが全ての基本なのです。このため、ウィンドウ自体を扱う時は、オブジェクトの指定は必要なく、単にプロパティ名だけを書けばいいことになっています。逆に「Window1.width」などと書くとエラーになるので注意して下さい。

 さて、Timerの基本はわかりましたね? では応用問題です。「必要に応じてTimerを動作させる」という場合はどうすればいいでしょう?

 Modeで動作をチェックしていることを思い出せば、答えは簡単ですね。そう、最初にTimerのModeを0に設定しておき、必要に応じてこれを1や2に変更すればいいわけです。――では、今作ったサンプルを改良してみましょう。

 Window1のウィンドウにボタンを1つ作成して下さい。そしてそれに以下のプログラムを記述します。


Sub Action ()
	if Timer1.mode = 0 then
		Timer1.mode = 2
	else
		Timer1.mode = 0
	end if
End Sub

 できあがったら、Timer1のModeを0に変更して、完成です。実行してみましょう。今度はグラフィックは動きません。作成したボタンをクリックすると、動くようになります。再度ボタンをクリックするとまた止まります。どうです、簡単にTimerをON/OFFできることがわかったでしょう?


■QuickTimeムービーを利用する


 グラフィックファイルの使い方がわかれば、後は簡単です。他にも使えるファイルがないか試してみましょう。例えば、QuickTimeのムービーファイルはどうでしょう?

 REALbasicにはMoviePlayerというオブジェクトが用意されています。ですから、これを使えばムービーを表示したりできるようになるはずですね。では試してみましょう。


1.まず、新規プロジェクトを作り、Window1ウィンドウを開きます。そしてMovieファイルをProjectウィンドウへドラッグ&ドロップします。ここでは例として「QuickTime Logo Movie」というファイルを組み込んでみます。

2.次に、MoviePlayerオブジェクトを1つ配置して下さい。このオブジェクトには、Mムービー表示のためのプロパティがいろいろとあります。Propertiesパレットから「Movie」という項目を探して下さい。これをマウスでプレスすると、先に組み込んだ「QuickTime Logo Movie」という項目が現れますから、これを選択します。これで、画面には表示されませんが、このMoviePlayer1オブジェクトに先のムービーファイルが設定されたのです。


3.最後に、ボタンを2つ作成します。PropertiesパレットでCaptionを変更して、それぞれ「Play」「Stop」としておきましょう。そして、各ボタンに以下のプログラムを記述します。


●Playボタン●

Sub Action () MoviePlayer1.play End Sub

●Stopボタン●

Sub Action () MoviePlayer1.stop End Sub
 これで完成です。プログラムを実行してみましょう。ウィンドウが現れると、ちゃんとMoviePlayer1に設定したムービーが表示されるはずです。そして「Play」ボタンを押せば再生開始し、「Stop」ボタンを押すとムービーが停止します。

 ムービーを操作しているのは、2つのボタンですね。ここでは「Play」「Stop」というものを使っています。これらはいずれもMoviePlayerオブジェクトに用意されているメソッドで、ムービーを再生/停止するものです。

 ただし、ムービーの再生は簡単に行なえるのですが、それ以上の細かな制御は今のところ無理なようです。例えば、ボリュームを変更したり、ムービーの表示位置を任意のところに移動したりといったことは、今は行なえません。ムービーのコントローラを表示できますから、これで後はユーザーに勝手に操作してもらう、というしかないようです。

 また、このMoviePlayerオブジェクトはJavaアプレットにコンパイルする時は使うことができません。Macのアプリケーション専用のオブジェクトなのです。このあたり、早く改良されるといいですね。


■アップルスクリプトを利用する


 REALbasicは、外部ファイルをプロジェクトに取り込んで利用することができます。グラフィックのようなデータファイルだけでなく、もっと実用的なものも取り込めるのです。それは、アップルスクリプトのファイルです。

 REALbasicは、基本的にはMacのROM内ルーチン(ToolBox)などをアクセスすることができません。つまり、あらかじめ用意されている部品を組み合わせて作るしかないのです。しかし、アップルスクリプトのファイルを取り込んで実行すれば、REALbasicに用意されていない機能を使えるようになります。

 では、簡単なサンプルを作ってみましょう。例として、「モニタの表示色数を変更する」というプログラムを考えてみましょう。

 まず、スクリプト編集プログラムを起動し、以下のスクリプトを記述して下さい。


●日本語の場合●

アプリケーション“Finder”について 最大モニタ階調をモニタ階調設定 以上

●英語の場合●

tell application "Finder" set monitor depth (max monitor depth) end tell
 日本語表記と英語表記の両方をあげておきます。どちらでも使いやすい方を利用して下さい。記述したら、「MaxColor」というコンパイル済みスクリプトファイルで保存します。アップルスクリプトをかじっている人ならわかるでしょうが、これはモニタの表示色数を最大発色にするスクリプトですね。

 次に、最小(すなわちモノクロ)にするスクリプトを書きましょう。スクリプト編集プログラムで、以下のスクリプトを記述して下さい。


●日本語の場合●

アプリケーション“Finder”について 最小モニタ階調をモニタ階調設定 以上

●英語の場合●

tell application "Finder" set monitor depth (min monitor depth) end tell
 できあがったら、「MinColor」という名前で保存します。これで色数を変更する2つのスクリプトファイルができました。

 では、REALbasicを起動し、2つのファイルをProjectウィンドウへドラッグ&ドロップしてください。2つのスクリプトが、それぞれ「MaxColor」「MinColor」という名前でプロジェクトに組み込まれます。

 では、今度はWindow1ウィンドウを開き、2つのボタンを作って下さい。そして、それぞれに以下のプログラムを記述します。


●1つ目のボタン●

Sub Action () MaxColor End Sub

●2つ目のボタン●

Sub Action () MinColor End Sub
 これらのボタンは、Captionプロパティを変更して、「最大色数に変更」「モノクロに変更」というように、働きがわかりやすいようにしておくとよいでしょう。

 できあがったら、実行してみましょう。2つのボタンをクリックすると、ディスプレイの表示が最大カラー/モノクロと切り替わるのがわかります。

 いかがです、比較的簡単にアップルスクリプトを呼び出せることがわかったでしょう? REALbasicは、この他「XCMD」と呼ばれるHyperCardの拡張リソースなども組み込むことができます。ある程度プログラミングに精通している人なら、XCMDを自分で作って組み込めば、REALbasicを更に拡張していくことができるでしょう。

 XCMDは、作成にはCなどのプログラミング言語を使わなければいけません。そうしたものはよくわからない、という方は、とりあえずアップルスクリプトを使ってみましょう。アップルスクリプトは非常にわかりやすい言語ですから、ちょっと勉強すれば簡単なプログラムは書けるようになります。特に、Finderやアプリケーションを操作するのに威力を発揮します。REALbasicをアップルスクリプトにGUIを付け足すツールと割り切ってしまえば、アップルスクリプトユーザーには強力な武器となるでしょう。


GO NEXT


GO HOME