スクリーンセーバーをつくろう!

スクリーンセーバーの仕様がHSP2.4hくらいから変わったようなので、
その仕様にあわせたサンプルを発表したいと思います。
要望のあった、グラフィックを順番に表示する、というモノの1番シンプルなものを作りました。
2枚の絵を交互に表示するのです。
絵のファイル名を変更すれば、手元にあるグラフィックを使ってスクリーンセーバーが作れますね。
今回の牛もLightwaveのサンプルデータの牛です。

cow0007.jpg
cow0016.jpg

下のリストはスクリーンセーバーの本体です。
本体だけなので、このままコピーペーストしてもスクリーンセーバーとして動きません。
全体を知りたい場合はスクリプトをダウンロードして、sanplesc.asをご覧下さい。

今回はグラフィックを2つのバッファに読みこんで、交互に表示しています。
紫の部分が新仕様に対応した部分です。
今回は単純にするためにwaitの値を1にしましたが、 このままだと少し早すぎるかも知れません。
SCRファイル(スクリーンセーバー本体)を右クリックのテストで動作させた場合、 あまりにも早い時間でこの部分まで来てしまうと、
マウスで”テスト”を起動させるための、いました操作にスクリーンセーバーが反応してしまう可能性があります。
そのためにwait命令を20回実行するまで、復帰用のチェックを行わない仕様に変更されました。

 
	;スクリーンセーバー本体
*ssproc
	ax=dispx:ay=dispy		; ax,ayに画面サイズ
	bgscr 2,ax,ay,0,0,0,ax,ay	; ID2にフルスクリーン画面を作成

	buffer 3,,,0
	picload "COW0007.jpg"
	wx3=winx:wy3=winy
	buffer 4,,,0
	picload "COW0016.jpg"
	wx4=winx:wy4=winy
	gsel 2

	repeat 20
	wait 1
	loop

*textput
	cls 4
	x=(winx/2)-(wx3/2)
	y=(winy/2)-(wy3/2)
	pos x,y
	gcopy 3,0,0,wx3,wy3
	wait 500

	cls 4
	x=(winx/2)-(wx4/2)
	y=(winy/2)-(wy4/2)
	pos x,y
	gcopy 4,0,0,wx4,wy4
	wait 500
	goto *textput
 

青い部分とみどりの部分は同じ構造になっているのが分かります。
gcopy命令のバッファの指定だけが違います。
表示座標は、グラフィックが中央にくるように、元のグラフィックの幅wx3を2で割ったものを
スクリーンの幅winxを2で割ったものから引いています。



y座標に関しても同じことをしています。

それから、グラフィックに関して注意点をいくつか書いておきます。

■読みこめるグラフィックはHSPが対応しているタイプだけなので、 GIFやプログレッシブJPEGなどには対応していません。

■jpegでも拡張子がjpeのものは、そのままでは読みこめないので、 拡張子をjpgに変更しておく事が必要です。

■グラフィックのサイズは8の倍数にしておきましょう。


実際にスクリーンセーバーのファイルを作るときは

1)コンパイルする。

2)start.axファイルを作成する。

3)packfileを作る。
このとき、グラフィックのファイルもパックしておかないと、後々面倒です。
packfileに加えておきましょう。

4)スクリーンセーバーの作成メニューで作成する。

5)右クリックのテストでスクリーンセーバーをテストする。

6)インストールしてテストする。

というふうに作ります。

というわけで、スクリーンセーバーの解説はおわりです。

牛スクリーンセーバーのソースとデータのダウンロード
(Windowsの動く環境です。)

実践編の目次に戻る