トップ 最新 追記

吉里吉里日記


2005-06-05

くらすぺ

なかなかやれてないのですが、とりあえず宝箱39個まで。 まだ攻略してない部屋があるのでそれが先だけど、 部屋以外の宝を探すのは大変そう。

[]

2005-06-12

吉里吉里 2.25 beta 5 / KAG3 3.25 beta 5 公開

吉里吉里 2.25 beta 5 / KAG3 3.25 beta 5 が公開されました。

変更点は吉里吉里 開発版(β版)の詳細よりどうぞ。

[]

2005-06-19

TJS スクリプト中から KAG のタグを実行する

TJS スクリプト中から KAG のタグの実行を登録できるようにする改造をしてみました。

 global.kag.conductor.enqueueTag(%[tagname : 'trans', method : 'crossfade', time : '50']);
 global.kag.conductor.enqueueTag(%[tagname : 'wt']);

と書いておくと、吉里吉里に制御が戻った時点でこれらのタグが実行されます。

KAGWindow.onConductorUnknownTag() から使うと、正規表現的なマクロ定義ができて面白いかもしれません。

例えばこんな感じ。

   function onConductorUnknownTag(tagname, elm){
       // KAG で本文中に
       // @@ほげほげ
       // と書くと、tagname が '@ほげほげ' としてこの関数が呼び出される

       var r = /^@(.+)$/;
       if(r.exec(tagname).count == 0){
           throw new Exception("タグ/マクロ \"" + tagname + "\" は存在しません");
           return 0; // この戻り値は、各タグハンドラが返す物とおなじ
       }

       //
       // いろいろやる
       //
       conductor.enqueueTag(%[tagname : 'trans', method : 'crossfade', time : '50']);
       conductor.enqueueTag(%[tagname : 'wt']);

       return 0;
   }

パッチ

 --- Conductor.tjs.orig  2005-06-19 20:18:50.562500000 +0900
 +++ Conductor.tjs       2005-06-19 20:17:31.312500000 +0900
 @@ -17,7 +17,7 @@
         var oneshot;
         var _interrupted = false; // 中断中か
         var timerEnabled = false; // タイマが起動中か
 -       var pending; // 後回しにされたタグ
 +       var pendings; // 後回しにされたタグ
         var inProcessing = false; // timerCallback を処理中かどうか
         var reentered = false; // timerCallback 中に 再入したか
         var nextTimerTick = 0; // 次にタイマーが発動されるはずの tick
 @@ -33,6 +33,8 @@
                 oneshot = new AsyncTrigger(timerCallback, '');
                         // これも同様
                 oneshot.cached = true; // イベントのキャッシュを有効に
 +
 +               pendings = [];
         }
 
         function finalize()
 @@ -46,7 +48,7 @@
         function clear()
         {
                 // clear オーバーライド
 -               pending = void;
 +               pendings.clear();
                 super.clear();
         }
 
 @@ -67,11 +69,11 @@
                         inProcessing = true;
                         for(;;)
                         {
 -                               if(pending !== void)
 +                               if(pendings.count > 0)
                                 {
                                         // 後回しにされたタグがある場合
 -                                       obj = pending;
 -                                       pending = void;
 +                                       obj = pendings[0];
 +                                       pendings.erase(0);
                                 }
                                 else
                                 {
 @@ -108,7 +110,7 @@
                                                 switch(step)
                                                 {
                                                 case -5: // いったんイベントを処理(現在のタグは後回し)
 -                                                       pending = obj;
 +                                                       pendings.insert(0, obj);
                                                         oneshot.mode = atmAtIdle;
                                                         oneshot.trigger(); // トリガ
                                                         timer.interval = 0; // タイマは停止
 @@ -123,7 +125,7 @@
                                                         reentered = false;
                                                         return;
                                                 case -3: // 後回ししてブレーク
 -                                                       pending = obj;
 +                                                       pendings.insert(0, obj);
                                                         timer.interval = 0; // タイマは停止
                                                         inProcessing = false;
                                                         reentered = false;
 @@ -278,10 +280,10 @@
                 t.enabled = st.enabled;
                 timerEnabled = src.timerEnabled;
                 _interrupted = src._interrupted;
 -               if(src.pending !== void)
 -                       (Dictionary.assign incontextof pending)(src.pending);
 +               if(src.pendings.count > 0)
 +                       pendings.assignStruct(src.pendings);
                 else
 -                       pending = src.pending;
 +                       pendings.clear();
                 super.assign(src);
         }
 
 @@ -295,23 +297,27 @@
         {
                 // restore オーバーライド
                 super.restore(...);
 -               pending = void;
 +               pendings.clear();
         }
 
         function loadScenario()
         {
                 // loadScenario オーバーライド
 -               pending = void;
 +               pendings.clear();
                 super.loadScenario(...);
         }
 
         function goToLabel()
         {
                 // goToLabel オーバーライド
 -               pending = void;
 +               pendings.clear();
                 super.goToLabel(...);
         }
 
 +       function enqueueTag(tag)
 +       {
 +               pendings.add(tag);
 +       }
  }
 
 
[]

2005-06-25

CLANNAD PS2 に移植

だそうです。 http://key.visualarts.gr.jp/

CLANNAD、機会があればやりたいなぁと思いつつも、 DVDドライブ持ってないなぁ→今のところ記録型 DVD は使う予定ないけど CD-R は書きたい→今ある CD-R/RW ドライブを捨てるのも何だしなぁ →DVD-ROM ドライブを買ってきてもいいけど、ドライブ2個ってのもなぁ

というほとんど「やらない理由探し」状態だったので、 PS2 版が出たらちょうどいい機会なので買いそう。

[]

2005-06-29

loadImages() でエラー

Layer を継承したクラスのインスタンスに対して loadImages() すると 「この type のレイヤでは描画や画像読み込みや画像サイズ/位置の変更/取得はできません」 というエラーが出てきました。

覚えのないエラーだったのでちょっと悩みましたが、原因が判明。

 class MyLayer extends Layer{
   var type;
   ...

と、メンバ変数として type を定義してしまっていたので これが Layer の type とかぶってしまっていたのでした。

メンバ変数の定義には気をつけないといけないですね。

[]

2005|02|03|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|04|05|07|08|