Processingの作品をScreensaverにする方法を試行錯誤してみました。
Screensaverにするために①
まず、Screensaverにするためにexit()
を追加します。
|
|
これで、キー押下もしくはマウスクリックでアプリを抜けられるようになります。
なぜmouseMoved()
で抜けないのかというと、WindowsアプリにExportすると最初の起動はいいのですが、2回目以降から起動と同時にアプリ終了してしまう現象が発生するためです。
所有する2台のWindows 7で共に同様の現象だったので、Processing生成によるWindowsアプリに依存した挙動のようです。
ちなみにログを仕込んで回避方法も検討したので、mouseMoved()
で抜けたい人は下記の方法で実装できます。
といってもたいした話ではなくて、
|
|
こんな感じで、数回mouseMoved()
がCallされたらexit()
するようにすればいいだけです。
ログを入れてExportしてみたところ、どうも起動時にランダムに数回mouseMoved()
が発行されていることがわかったので、ある程度マウスが動いたら抜けるようにすることで回避できました。
Screensaverにするために②
もしvlwファイルなど、リソースを利用している場合は/data以下にもう一階層ディレクトリを掘っておきます。
たとえば、/data/application_name
など、アプリを識別できる名前がいいと思います。理由は最後に記載してあります。
WindowsアプリのExport
ProcessingにはWindowsアプリとしてExportする機能がIDEについていますが、windows 64bit向けのExportはexeファイルではなくて、batファイルになっています。
batファイルを開くと、下記のように出力されていて実体はlib以下にあることがわかります。
|
|
Screensaverとして後ほどインストールするときに他のアプリとコンフリクトしないよう、ここでも一部書き換えをします。
ここでは適当にアプリ名+libにしました。
そして、batファイルの中身もそれに対応するよう書き換えます。
|
|
これで、準備ができました。
scrファイル (exeファイル) を作成
そして、scrファイルを作成します。scrファイルはWindowsアプリケーションのexeファイルの拡張子を変更しただけなので、exeファイルが作れれば作成できます。
こちらのサイトにbatファイルをexeファイルに変換するオンラインアプリが公開されていましたので、利用させていただきました。
先ほど作ったbatファイルをこのアプリでexeファイルに変換してDLします。 これでScreensaverが完成しました。最後にインストールです。
Windowsにインストールする
下記がアプリとして1セットなので、これをC¥windows¥sysWOW64以下に配置します。
- /data以下
- /lib以下
- scrファイル
ここで、最初にdata以下にアプリ独自名でディレクトリを切った効果があります。
もし既に/data を利用するアプリが配置されていた場合、/data 直下にファイルを置いていると他のアプリリソースとコンフリクトする可能性があるので、もう一段階層を掘っておくことで/data以下がアプリ毎に分かれるのでコンフリクトを防ぐことができます。
また、/libの名前も変えておくことで他のアプリとの競合を防ぎ、どのアプリに関するディレクトリなのかを識別できるようにしています。
あとは、スクリーンセーバーの設定画面でアプリを選択するだけです。 これでWindows 64bit向けスクリーンセーバーを作成、配布することができると思います。