スクリーンセーバーをつくろう!
スクリーンセーバーの仕様が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の動く環境です。)
実践編の目次に戻る