他のswfファイルからサリング本体(crs.swf)を呼び出して実行させる事が出来る。これをセレクタモードと呼び、その外部のswfファイルをセレクタと呼ぶ。
バージョン3.00以上のサリング本体が必要である。
可能な限り最新の本体を使うこと。
リストモード、エキスパートモードでは使えない。
主な仕様は以下である。
・ファイル名は、crssel.swf・40fps、SWF6
・大きさは自由であり、セレクタの大きさと呼び出したサリングの大きさは同じになる。標準では400x400であり、縦1:横1の対比を守る事を推奨する。
・セレクタに背景色があると、サリングにも影響する。
各ファイルは以下のように置く必要がある。まずcrs.swfとcrssel.swfを置き、ゲームはcrs.swfではなくcrssel.swfを表示して開始する。
crs.swf サリング本体 crssel.swf セレクタ本体 セレクタ表示用html(サリングのゲーム表示用と同じでよい) ディレクトリ:(ゲーム名) +-- data.txt +-- bgm.mp3 +-- その他背景、追加音のファイル ディレクトリ:(ゲーム名) +-- data.txt +-- bgm.mp3 +-- その他背景、追加音のファイル : :
プレイ可能なひとつのゲームごとに「ゲーム名」を決め、その名前のディレクトリの中に、ゲームに必要なdata.txt、bgm.mp3、その他のファイルを入れる。
ゲーム名は何でも良いが、半角アルファベットと数字だけを使う事が望ましい。
セレクタ表示htmlのサンプル(右クリック保存、拡張子をhtmlに変更すること
セレクタからサリングを呼び出すには、以下のようにgetURL関数を使う。
ゲーム名を引数として渡すことで、使用するゲームを指定する。
ここではゲーム名を「chanvala」とする。
「chanvala」というディレクトリの中のdata.txtとbgm.mp3を使ってゲームを開始する。
_root.getURL("crs.swf?gamename=chanvala","_level0");
セレクタモードでは、タイトル画面の左上に、セレクタに戻るためのボタンが表示される。
これを押すと、crs.swfの実行を終了し、crssel.swfを読み込んで実行する。
セレクタモードでは、自動的に共有オブジェクト(SharedObject)に様々な情報が保存される。
具体的にはタイトルが表示されるたびに保存される。
これらの内容は、サリング本体(crs.swf)を起動するたびに全て消去される。
セレクタから呼び出され、またセレクタに戻るまでのゲーム内容だけが保存される。
この事を「今回のプレイ」と呼ぶ。
識別名は、「crsseldat」である。
セレクタにて、以下のように共有オブジェクトを作成する。
sos = SharedObject.getLocal("crsseldat","/"); sosとはセレクタで使用する共有オブジェクト名である。 自由に決めて良いが、ここではsosで説明する。
これにより、以下の変数を読み込む事が出来る。
sos.data.condstr_m 今回のMANIACでハイスコアを出した時のコンディション文字列
sos.data.flg 常に1 sos.data.gamename ゲーム名 sos.data.play_e 今回のEASYプレイ回数 sos.data.play_h 今回のHARDプレイ回数 sos.data.play_m 今回のMANIACプレイ回数 sos.data.clr_e 今回のEASYクリア回数 sos.data.clr_h 今回のHARDクリア回数 sos.data.clr_m 今回のMANIACクリア回数 sos.data.hi_e 今回のEASYのハイスコア sos.data.hi_h 今回のHARDのハイスコア sos.data.hi_m 今回のMANIACのハイスコア sos.data.t_score 今回の累積スコア sos.data.t_ok 今回の累積OK数 sos.data.t_late 今回の累積LATE数 sos.data.t_ng 今回の累積NG数 sos.data.t_sec 今回の累積プレイ時間(秒) sos.data.hi_cmb 今回の最大コンボ数 sos.data.condstr_e 今回のEASYでハイスコアを出した時のコンディション文字列 sos.data.condstr_h 今回のHARDでハイスコアを出した時のコンディション文字列
ゲーム名とは、サリングを起動する時に指定するゲーム名と同じである。
今回のハイスコアとは、今回のプレイの中だけを見た時の最高得点である。あらかじめ保存されているハイスコアは無視される。
累積スコアとは、EASY/HARD、CLEAR/FAILEDに関わらず、スコアが累積される値である。
例:
保存されているハイスコアが40000、今回2回プレイして10000、20000だった場合、今回のハイスコアは20000、累積スコアは30000となる。
累積プレイ時間とは、EASY/HARD/MANIAC、CLEAR/FAILEDに関わらず、プレイした時間が秒単位で蓄積される値である。
コンディション文字列とは、コンディションの結果を表した48文字の文字列である。
ミスがない部分を「0」、ミスがあった部分を「1」としてそれが48個続く。
sos.data.condstr_e = "000000000000100000000100000000010000000001000000";
この保存内容が存在した場合にセレクタで処理をするような場合、処理が済んだら保存内容を無効にしなければ、同じ保存内容を何度も処理する事になる。
sos.data.flg は必ず1なので、これを使い、のような方法が考えられる。
if (sos.data.flg == 1) { 処理; sos.data.flg = 0; //0にして無効化 }