【ティラノスクリプト】PCアプリ版とブラウザ版の処理振り分け方法
ティラノスクリプトはWindows版のEXE形式に出力できたり、ブラウザで動作可能な形式に出力できたりと、様々な環境で実行できます。
その中で、「PCアプリ版だとこの処理がいらないけど、ブラウザからだとこの処理が必要だよなー」って状況があったりします。(主にpreload処理のローディング画面など)
PCアプリ版とブラウザ形式別々でプロジェクトを作成するのも一つの手ですが、管理が煩雑になりますし、仮にノベルゲームコレクションへ登録することを前提とするとその手は使えません。
そこで、今回はPCアプリ版とブラウザ版で処理を振り分ける方法をご紹介します。
振り分けを実現する関数
タグリファレンスにはタグしか載っていない為、あまり表に出ることはないのですが、ティラノスクリプトでは汎用的な処理をする場面で便利な関数が「tyrano/libs.js」の中で複数定義されています。
今回PCアプリ版とブラウザ版で振り分けに使用する関数も定義されています。
その関数名が、
$.isElectron()
と
$.isNWJS()
になります。
ティラノスタジオ/ティラノビルダーV5(ティラノスクリプトV5系)はElectronというフレームワークで作成されており、ティラノライダー/ティラノビルダー(ティラノスクリプトV4系)はNW.jsというフレームワークで作成されています。
また、それらで出力したPC版アプリ(配布形式をWindowsやMacとしてエクスポートしたもの)も同様のフレームワークを使用して動作する仕組みとなっています。
$.isElectron()と$.isNWJS()は、それぞれ現在どのフレームワーク上で実行しているかを判別する関数となっています。
関数の使用方法
ティラノスタジオ/ティラノビルダーV5(ティラノスクリプトV5系)の場合は$.isElectron()
ティラノライダー/ティラノビルダー(ティラノスクリプトV4系)の場合は$.isNWJS()
を使用します。
これらの関数は、開発環境及びPCアプリ版で実行した際はtrue。
それ以外の環境(≒ブラウザ版)で実行した際はfalseを返します。
この仕様を利用して、下記のようなコードを記述することが可能です。
;ティラノスクリプトV5系
[if exp="$.isElectron()"]
;ここにPCアプリ版での処理
[else]
;ここにブラウザ版での処理
[endif]
;ティラノスクリプトV4系
[if exp="$.isNWJS()"]
;ここにPCアプリ版での処理
[else]
;ここにブラウザ版での処理
[endif]
また、condを用いることにより、preloadタグだけを飛ばすなどの記述も可能です。
;ティラノスクリプトV5系
;preloadタグをPCアプリ版以外で実行する
[preload storage="data/bgimage/title.jpg" cond="$.isElectron() != true"]
;ティラノスクリプトV4系
;preloadタグをPCアプリ版以外で実行する
[preload storage="data/bgimage/title.jpg" cond="$.isNWJS() != true"]
他にもこんな関数が
「tyrano/libs.js」の中にこんな関数も定義されています。
//ユーザのブラウザ情報を取得
$.getBrowser = function() {
var userAgent = window.navigator.userAgent.toLowerCase();
if (userAgent.indexOf('msie') >= 0 || userAgent.indexOf('trident') >= 0) {
return "msie";
}else if (userAgent.indexOf("edge") > -1) {
return "edge";
}else if (userAgent.indexOf("firefox") > -1) {
return "firefox";
} else if (userAgent.indexOf("opera") > -1) {
return "opera";
} else if (userAgent.indexOf("chrome") > -1) {
return "chrome";
} else if (userAgent.indexOf("safari") > -1) {
return "safari";
}else if (userAgent.indexOf("applewebkit") > -1) {
return "safari";
}else {
return "unknown";
}
};
$.getBrowser()を使用すると現在実行されているブラウザの種類が返ってきます。
特定のブラウザでのみ処理を変更したい!と言った場合はこの関数を利用しましょう。
最後に
今回は紹介しませんでしたが、他にも「tyrano/libs.js」の中には便利な関数が定義されていますので、ちょっと覗いてみると今まで苦労していた処理が実は簡単に実行できたってこともあるかもしれません。
「tyrano/libs.js」は拡張子の通りJavascriptで記述されてるため、関数の使用方法を理解するにはJavascriptを読む必要がありますが、ティラノスクリプトを弄っているならそこまで難しくないものも多いので、一度覗いてみると何か新しい発見があるかもしれませんよ!