KAGLayersPlugin 1. はじめに KAGLayersPluginは、自作レイヤをKAGから使えるようにするラッパ である。 作ったことある人でないとわかんないと思うが、吉里吉里では class ABCLayer extend KAGLayer などで作成したレイヤ ABCLayer は、 そのままではKAGの[trans]でうまいことトランジションしないし、 セーブ・ロードにも対応していない。これらを対応させるために KAGPluginクラスを使うのであるが、その部分をあらかじめ作成した ものだと思って頂ければ結構。 これがあると、自作レイヤクラスをKAGに組み込むのがとっても 楽になる。拙作ExtSystemButtonプラグインはこれを元にしている。 2. 使用例 最初に一回だけ、KAGスクリプト(例えばfirst.ks)の頭で以下を実行。 [call storage="KAGLayersPlugin.ks"] そうすると、KAGLayersPlugin と MessageLayersPlugin クラスが使用可能 となる。 自作レイヤクラス ABCLayer を KAGLayersPlugin に組み込むには、 以下の二行を実行する必要がある。 global.自作レイヤインスタンス = new KAGLayersPlugin(kag, ABCLayer); kag.addPlugin(global.自作レイヤインスタンス); 3. 自作クラススケルトン class 自作クラス extends KAGLayer(またはその派生レイヤ) { // var name; name は Layer クラスに有るので定義不要。 // コンストラクタ(ウィンドウ、親レイヤ、名前文字列(ID)、オプション) function 自作クラス(window, parent, name, elm) { this.name = name; setOptions(elm); } // デストラクタ function finalize() { } // オプション設定。オプションは全て elm で渡されることに注意。 function setOptions(elm) { } // 自作クラスのコピー function assign(src) { name = src.name; } // 自作クラスのセーブ(KAGから呼ばれる) function store() { var dic = %[]; dic.name = name; return dic; // セーブ値はハッシュ辞書に入れて返す } // 自作クラスのロード(KAGから呼ばれる) function restore(dic) { name = dic.name; // ハッシュ辞書で渡されたものを元に戻す } } 3. KAGPlayersPlugin クラスリファレンス ・コンストラクタ  KAGLayersPlugin(window、object、parent_foreLayer、parent_backLayer); window= ウィンドウ。通常は kag。 object= 自作クラスオブジェクトを指定。 parent_foreLayer= 親の前画面レイヤ。省略すると window.fore.base となる。 parent_backLayer= 親の後画面レイヤ。省略すると window.back.base となる。 ・オプション設定  setOptions(elm) elm= オプション指定が入った辞書配列。これはKAGを通して来るので、 全て小文字になっている(ハズ)であることに注意。 elmは全て自作クラスの setOptions()に渡される。 ・自作クラスのインスタンスを一つ追加  add(name='noname', page='fore', elm) name= インスタンスの名前。指定しない場合は 'noname' となる。 そのインスタンスだけを特別扱いする、などでなければ、通常は name= を指定する必要は無い。 page='fore'(def)|'back'|'both' 追加するページを指定する。bothはforeとback両方を指す。 elm= 設定するオプション。上のsetOptions()で指定するものと同じ。 ・自作クラスのインスタンスを削除  del(name, page='fore') name= インスタンスの名前。指定しない場合は、全てのインスタンスが 対象となる。 page='fore'(def)|'back'|'both' 削除対象のページを指定する。 ※全部削除するなら、delOnPage(page='fore')の方がよい。 4. MessageLayersPlugin クラスリファレンス  本クラスは、KAGLayersPlugin を、メッセージレイヤに特化するために作成  された、平たく言えば派生クラス。ExtSystemButtonのために作成した。 ・コンストラクタ  MessageLayersPlugin(object, parent_foreLayer, parent_backLayer, withmessage=true, anytimeenabled=false) object= 自作クラスオブジェクトを指定。 parent_foreLayer= 親の前画面レイヤ。省略すると window.fore.base となる。 parent_backLayer= 親の後画面レイヤ。省略すると window.back.base となる。 withmessage=true(def)|false メッセージレイヤを隠すとここで表示するレイヤも隠すかどうか。 SystemButtonはメッセージレイヤにくっつくので、def=true。 anytimeenabled=true|false(def) 常にenabled(有効)にするか。SystemButtonはテキスト表示中や トランジション中はdisableにするので、def=false。 ※あとは KAGLayersPlugin に同じ。